微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Javafx Spinner 不显示数字

如何解决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 举报,一经查实,本站将立刻删除。