So erstellen Sie ein Integer-spinner mit FXML

Ich versuche zum erstellen einer Integer Spinner, sondern eine Double erstellt, statt.

Test.class

package com.neonorb.test;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.geometry.Insets;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Modality;
import javafx.stage.Stage;
import javafx.stage.StageStyle;

public class Test extends Application{
    @Override
    public void start(Stage stage) throws Exception {
        FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("Demo.fxml"));
        Parent root = fxmlLoader.load();
        Scene scene = new Scene(root);
        stage.setScene(scene);
        stage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

DemoController.class

package com.neonorb.test;

import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Spinner;

import java.net.URL;
import java.util.ResourceBundle;

public class DemoController implements Initializable{
    @FXML
    private Spinner<Integer> spinner;

    @Override
    public void initialize(URL url, ResourceBundle resourceBundle) {
        System.out.println(spinner.getValue());
    }
}

Demo.fxml

<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.control.Spinner?>
<?import java.lang.Integer?>
<BorderPane xmlns:fx="http://javafx.com/fxml" fx:controller="com.neonorb.test.DemoController">
    <Spinner fx:id="spinner" min="1" initialValue="1" amountToStepBy="1">
        <max>
            <Integer fx:constant="MAX_VALUE"/>
        </max>
    </Spinner>
</BorderPane>

Wenn ich es ausführen es gibt 1.0 ist, wie ich weiß, es ist ein Double spinner.

Ich denke, was passiert ist, dass FXMLLoader ist die Wahl der falschen Konstruktor für Spinner. Wie wähle ich die Integer?

Das funktioniert für mich: ich sehe die Ausgabe 1 (obwohl ich überrascht war... die Argumente in allen Konstruktoren versehen sind @NamedArg mit dem gleichen Wert, so dass ich nicht sicher bin, wie es bestimmt, welche zu verwenden). @NwDx hat die richtige Antwort, wenn Sie sicher sein wollen, den richtigen Wert der Fabrik.
Mein Netbeans nicht zeigen, dass Argumente min, initialValue oder amountToStepBy bei Spinner-tag. Aber Sie sind alle versehen mit der @NamedArg. Seltsames Verhalten, weiß auch nicht warum.
Ja, es ist nicht in den Unterlagen... ich hatte, um sich in den Quellcode. (Verstehen Sie mich nicht begonnen auf der Dokumentation, die für FXMLLoader und NamedArg, etc...)

InformationsquelleAutor Chris Smith | 2015-07-06

Schreibe einen Kommentar