值集不会显示在 Medusa Gauge 中

The value set doesn't get displayed in the Medusa Gauge

我尝试将 Medusa Gauge 添加到我使用 FXML 的 JavaFX 项目中。 我在场景构建器中正确映射了 fx:id 并设置了一个要显示的值。

但不幸的是,该值未显示,仅显示默认值 0.00

这是我的代码

Class 包含主要方法 - GaugeFX.java

public class GaugeFX extends Application {

    @Override
    public void start(Stage stage) {
        try {
            Parent root = FXMLLoader.load(getClass().getResource("Demo.fxml"));

            Scene scene = new Scene(root);

            stage.setScene(scene);
            stage.show();
        } catch (IOException ex) {
            Logger.getLogger(GaugeFX.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }

}

FXML - Demo.fxml

<?xml version="1.0" encoding="UTF-8"?>

<?import eu.hansolo.medusa.Gauge?>
<?import javafx.scene.layout.AnchorPane?>

<AnchorPane id="AnchorPane" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.102" xmlns:fx="http://javafx.com/fxml/1" fx:controller="gaugeDemoFX.DemoController">
   <children>
      <Gauge fx:id="gaugeExample" alert="true" alertMessage="Almost full" animated="true" areaTextVisible="true" layoutX="123.0" layoutY="113.0" lcdFont="ELEKTRA" skinType="SLIM" />
   </children>
</AnchorPane>

FXML 控制器 - DemoController.java

public class DemoController implements Initializable {

    @FXML
    Gauge gaugeExample;

    @Override
    public void initialize(URL url, ResourceBundle rb) {

        GaugeBuilder builder = GaugeBuilder.create();
        gaugeExample = builder.decimals(0).maxValue(10000).unit("Questions").build();
        gaugeExample.setValue(45);
    }    
}

我试着查看文档。那里的例子是用硬编码完成的。我注意到 Gauge 的值是在展示舞台之前设置的。

https://community.oracle.com/docs/DOC-992746

但据我所知,即使我使用 FXML 制作项目,我也做了同样的事情。

谁能告诉我哪里出错了,我设置的值没有显示出来?

您正在用 initialize 方法中的新值覆盖包含在 fxml 中创建的 Gauge 的字段值。新的永远不会添加到场景中;你只看到旧的未修改的。

如果 Gauge 的工作方式与 JavaFX 标准 Controls 的工作方式相同,您只需要使用 setter 而不是使用构建器:

@Override
public void initialize(URL url, ResourceBundle rb) {
    gaugeExample.setDecimals(0);
    gaugeExample.setMaxValue(10000);
    gaugeExample.setUnit("Questions");
    gaugeExample.setValue(45);
}

此外,还应该可以从 fxml 文件分配属性:

<Gauge fx:id="gaugeExample"
       alert="true"
       alertMessage="Almost full"
       animated="true"
       areaTextVisible="true"
       layoutX="123.0"
       layoutY="113.0"
       lcdFont="ELEKTRA"
       skinType="SLIM"
       decimals="0"
       maxValue="10000"
       unit="Questions"
       value="45" />