I am trying to create an Integer
Spinner
, but instead, a Double
one is created instead.
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>
When I execute it it outputs 1.0
which is how I know it is making a Double
spinner.
I guess what is going on is that FXMLLoader
is choosing the wrong constructor for Spinner
. How do I choose the Integer
one?