gpt4 book ai didi

java - 将 DateTimePicker 添加到按钮

转载 作者:行者123 更新时间:2023-12-02 03:25:55 26 4
gpt4 key购买 nike

我正在尝试实现一个CalendarPicker,以便当我在JavaFX中按下Button时它将在新窗口中打开

我为我的日历添加了一些代码:

@FXML
public void dateTimePicker(Stage primaryStage){
CalendarPicker dateTime = new CalendarPicker();
dateTime.withCalendar(Calendar.getInstance());
dateTime.withShowTime(Boolean.TRUE);
dateTime.withLocale(Locale.ENGLISH);
dateTime.calendarProperty().addListener(new ChangeListener<Calendar>() {

public void changed(ObservableValue<? extends Calendar> ov, Calendar t, Calendar t1) {
System.out.println("Selected date: "+t1.getTime().toString());
}
});
StackPane root = new StackPane();
root.getChildren().add(dateTime);

Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("Date & Time from JFXtras 2.2");
primaryStage.setScene(scene);
primaryStage.show();
}

然后向我的 FXML 添加一个按钮

<Button id="dateTimePicker" fx:id="dateTimePicker" layoutX="14.0" layoutY="398.0" mnemonicParsing="false" text="Start" />

最后初始化了我的Button

@FXML
private Button dateTimePicker,

我的按钮实际上没有执行任何操作 - 没有打开新窗口。我没有收到任何错误,但在 Eclipse 中收到警告

Parameter 'primaryStage' is not assignable to javafx.event.Event

我做错了什么?

编辑

向按钮添加 onAction 属性已停止我的应用程序运行。错误是:

 Error resolving onAction='#dateTimePicker', either the event handler is not in the Namespace or there is an error in the script.

最佳答案

假设您为 FXML 文件设置了一个 Controller ,并且在该 Controller 中定义了 dateTimePicker() 方法。

首先,您需要将按钮的操作映射到您使用按钮的 onAction 属性定义的方法:

<Button id="dateTimePicker" fx:id="dateTimePicker" onAction="#dateTimePicker" layoutX="14.0" layoutY="398.0" mnemonicParsing="false" text="Start" />

处理程序方法要么需要采用与生成的事件类型匹配的参数(onActionActionEvent),要么不需要参数。这就是您在 Eclipse 中收到警告的原因。由于您不需要访问事件本身,因此只需定义不带参数的方法即可:

@FXML
public void dateTimePicker(){

// ...
}

最后,如果你想显示一个新窗口,你必须创建一个新窗口。所以:

@FXML
public void dateTimePicker(){
CalendarPicker dateTime = new CalendarPicker();
dateTime.withCalendar(Calendar.getInstance());
dateTime.withShowTime(Boolean.TRUE);
dateTime.withLocale(Locale.ENGLISH);
dateTime.calendarProperty().addListener(new ChangeListener<Calendar>() {

public void changed(ObservableValue<? extends Calendar> ov, Calendar t, Calendar t1) {
System.out.println("Selected date: "+t1.getTime().toString());
}
});
StackPane root = new StackPane();
root.getChildren().add(dateTime);

Scene scene = new Scene(root, 300, 250);

Stage stage = new Stage();

stage.setTitle("Date & Time from JFXtras 2.2");
stage.setScene(scene);
stage.show();
}

关于java - 将 DateTimePicker 添加到按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38898611/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com