Я новичок в этом форуме, а также в программировании.Кроме того, мой английский не самый лучший, но я надеюсь, что вы поймете, что я имею в виду, и выручите меня.
Я хочу запрограммировать графический интерфейс и использовать JavaFX и датчики из библиотеки medusa.Что мне нужно сделать, так это изменить maxValue и minValue индикатора во время работы программы.Я могу изменить значения, но шкала индикатора не переставляет галочки должным образом.Например, когда я создаю Gauge от 0 до 10, а затем устанавливаю maxValue равным 100, масштаб показывает все числа в виде основного тика, и масштаб становится нечитаемым.Поскольку я не мог найти, как это исправить, я попытался удалить исходный датчик и создать просто новый.
Вот что я пробовал (я удалил остальную часть класса, потому что он более800 строк):
package application;
import eu.hansolo.medusa.Gauge;
import eu.hansolo.medusa.Gauge.SkinType;
import eu.hansolo.medusa.GaugeBuilder;
import javafx.beans.property.SimpleObjectProperty;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
public class Controller {
@FXML
StackPane stackPane;
private Gauge gauge;
private Button button;
@FXML
private void initialize() {
gauge = GaugeBuilder.create().skinType(SkinType.QUARTER).barBackgroundColor(Color.LIGHTGREY)
.needleColor(Color.RED).decimals(0).valueVisible(true).valueColor(Color.BLACK).title("Stromstärke")
.unit("[mA]").subTitle("Phase 1").minValue(0).maxValue(10).build();
stackPane.getChildren().add(gauge);
}
public void setMaxValueGauge(StackPane pStackPane, Gauge pGauge, int intMinValue, int pMaxValue) {
pStackPane.getChildren().remove(pGauge);
Gauge newGauge = GaugeBuilder.create().skinType(pGauge.getSkinType()).barBackgroundColor(pGauge.getBarColor())
.needleColor(pGauge.getNeedleColor()).decimals(0).valueVisible(true).valueColor(Color.BLACK)
.title(pGauge.getTitle()).unit(pGauge.getUnit()).subTitle(pGauge.getSubTitle()).minValue(intMinValue)
.maxValue(pMaxValue).build();
pGauge = null;
pGauge = newGauge;
pStackPane.getChildren().add(pGauge);
}
@FXML
public void testButton() {
setMaxValueGauge(stackPane, gauge, 0, 30);
}
}
The method testButton() is only for testing. When I call testButton() the first time, it works well, but when I use it twice or more, it seems that the old Gauge is not replaced. Instead the new one stacks on top of the old one.
Можете ли вы помочь мне.Мне нужно либо исправить отметки шкалы, когда я устанавливаю новое значение maxValue, либо правильно заменить старую калибровку в области стека.