2017-05-16 4 views
1

Ich habe versucht, eine Medusa Gauge zu meinem JavaFX-Projekt, das FXML verwendet. Ich habe die fx:id korrekt im Szenen-Builder zugeordnet und einen Wert festgelegt, der angezeigt werden soll.Der Wert wird nicht in der Medusa-Anzeige angezeigt

Aber leider wird der Wert nicht angezeigt und nur der Standardwert 0.00 wird angezeigt.

Hier ist mein Code

Klasse, die die Hauptmethode enthält - 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-Controller - 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); 
    }  
} 

Ich habe versucht, die Dokumentation zu betrachten. Dort wurden die Beispiele in Hardcoding gemacht. Ich habe festgestellt, dass der Wert Gauge vor dem Anzeigen der Bühne eingestellt wurde.

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

Aber meines Wissens nach, ich habe das gleiche getan, selbst wenn ich FXML verwendet, um das Projekt zu machen.

Kann mir bitte jemand sagen, wo ich falsch gelaufen bin, dass der eingestellte Wert nicht angezeigt wird?

Antwort

1

Sie überschreiben den Wert des Feldes, das die in der fxml erstellte Gauge enthält, mit einer neuen Methode in der initialize-Methode. Der Neue wird niemals der Szene hinzugefügt; Sie sehen nur das alte unmodifizierte.

Wenn Gauge die gleiche Weise funktioniert Standard JavaFX Control Arbeit, Sie brauchen nur Setter zu verwenden, anstatt den Erbauer der Verwendung:

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

Außerdem soll es auch möglich sein, die Eigenschaften aus der fxml Datei zuweisen:

<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" /> 

+0

ich hatte eine harte Zeit zu verstehen, was da der doc zu tun i Beispiele in harte Codierung .. dank getan bezeichnet hatte fo r die Hilfe –

Verwandte Themen