如何解决Javafx Spinner 不显示数字
我正在尝试加载一个带有值的微调器,我想让用户遍历这些值,但我设置的值没有显示出来。舞台与微调控件一起显示,但没有值。我只是想让微调器移动几年。
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
primaryStage.setTitle("Hello World");
primaryStage.setScene(new Scene(root,500,275));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
控制器;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ResourceBundle;
public class Controller implements Initializable {
@FXML private Spinner<Integer> sptestfx;
@Override
public void initialize(URL location,ResourceBundle resources) {
LocalDate ld = LocalDate.Now();
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd LLL yyyy");
String formattedString = ld.format(dtf);
System.out.println((ld.getYear() -2)+" "+(ld.getYear()+3)+ " "+(ld.getYear()));
sptestfx = new Spinner<Integer>((ld.getYear() -2),(ld.getYear()+3),ld.getYear(),1);
SpinnerValueFactory.IntegerSpinnerValueFactory intSpinFactory = (SpinnerValueFactory.IntegerSpinnerValueFactory) sptestfx.getValueFactory();
System.out.println(intSpinFactory.getMin() +" "+ intSpinFactory.getMax() + " " + intSpinFactory.getValue() + " " +intSpinFactory.getAmountToStepBy() );
}
}
FXML;
<GridPane alignment="center" hgap="10" vgap="10" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8.0.171" fx:controller="sample.Controller">
<columnConstraints>
<ColumnConstraints />
<ColumnConstraints />
</columnConstraints>
<rowConstraints>
<RowConstraints />
<RowConstraints />
</rowConstraints>
<children>
<AnchorPane prefheight="353.0" prefWidth="457.0">
<children>
<Spinner fx:id="sptestfx" layoutX="154.0" layoutY="143.0" prefheight="25.0" prefWidth="220.0" />
</children>
</AnchorPane>
</children>
</GridPane>
在我无法工作多年之后,我尝试了一个更简单的实现;
sptestfx = new Spinner<Integer>(1,10,5,1)
我用下面的代码看看我是否正确加载了微调器;
SpinnerValueFactory.IntegerSpinnerValueFactory intSpinFactory = (SpinnerValueFactory.IntegerSpinnerValueFactory) sptestfx.getValueFactory();
System.out.println(intSpinFactory.getMin() +" "+ intSpinFactory.getMax() + " " + intSpinFactory.getValue() + " " +intSpinFactory.getAmountToStepBy() );
此代码正确显示了我设置微调器要做的事情。我不确定我是否缺少对控制器和 FXML 页面之间的参考理解。
感谢您的帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。