我目前正在构建一个应用程序使用JavaFx与一个额外的功能,显示当前的日期和时间在顶角的场景。由于我是JavaFX新手,我不知道如何实现这个。
我试图使用swing中的旧代码,但我得到了一个IllegalStateException错误。
这是我的密码。
MainMenuController.java
@FXML private Label time;
private int minute;
private int hour;
private int second;
@FXML
public void initialize() {
Thread clock = new Thread() {
public void run() {
for (;;) {
DateFormat dateFormat = new SimpleDateFormat("hh:mm a");
Calendar cal = Calendar.getInstance();
second = cal.get(Calendar.SECOND);
minute = cal.get(Calendar.MINUTE);
hour = cal.get(Calendar.HOUR);
//System.out.println(hour + ":" + (minute) + ":" + second);
time.setText(hour + ":" + (minute) + ":" + second);
try {
sleep(1000);
} catch (InterruptedException ex) {
//...
}
}
}
};
clock.start();
}
<children>
<Label fx:id="time" textFill="WHITE">
<font>
<Font name="Segoe UI Black" size="27.0" />
</font>
</Label>
<Label fx:id="date" textFill="WHITE">
<font>
<Font name="Segoe UI Semibold" size="19.0" />
</font>
</Label>
</children>
Main.java
public class Main extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("view/MainMenu.fxml"));
primaryStage.setScene(new Scene(root,1366, 768));
primaryStage.show();
}
}
正如您所注意到的,我测试了它在控制台中打印实时时间。是的,它起作用了,但标签仍然是静态的。
我认为您需要FX UI Threadplatform.runlater(...)
,但是您可以使用控制器类中的timeline
来执行类似的操作,
@FXML
public void initialize() {
Timeline clock = new Timeline(new KeyFrame(Duration.ZERO, e -> {
LocalTime currentTime = LocalTime.now();
time.setText(currentTime.getHour() + ":" + currentTime.getMinute() + ":" + currentTime.getSecond());
}),
new KeyFrame(Duration.seconds(1))
);
clock.setCycleCount(Animation.INDEFINITE);
clock.play();
}
我是Java新手,我已经开始使用JavaFX在Java中开发应用程序。搜索了很多,但在JavaFX中找不到任何日期和时间选择器。甚至我也试过JFxtras,但它不起作用。顺便说一下,我使用的是JavaFX2.2.3和Java7。如有任何帮助,不胜感激。
让我一起学习一个新的内建对象:日期(Date)。该对象存储日期和时间,并提供了日期/时间的管理方法。 例如,我们可以使用它来存储创建/修改时间,或者用来测量时间,再或者仅用来打印当前时间。 创建 创建一个新的 Date 对象,只需要调用 new Date(),在调用时可以带有下面这些参数之一: new Date() 不带参数 —— 创建一个表示当前日期和时间的 Date 对象: let now =
日期和时间 日期、时间、时间戳的值支持ISO 8601格式,格式还包含了时区: CALL TIMESTAMP '2008-01-01 12:00:00+01:00'; 如果未设置时区,将使用系统中当前的时区。日期和时间信息存储在 H2 数据库文件,不包含时区信息。如果数据库打开使用另一个系统时区,日期和时间将是相同的。这意味着如果你存储的值“2000-01-01 12:00:00”在一个时区,然
PHP 中 DateTime 类的作用是在你读、写、比较或者计算日期和时间时提供帮助。除了 DateTime 类之外,PHP 还有很多与日期和时间相关的函数,但 DateTime 类为大多数常规使用提供了优秀的面向对象接口。它还可以处理时区,不过这并不在这篇简短的介绍之内。 在使用 DateTime 之前,通过 createFromFormat() 工厂方法将原始的日期与时间字符串转换为对象或使用
必须 使用 Carbon 来处理日期和时间相关的操作。 Laravel 5.1 中文的 diffForHumans 可以使用 jenssegers/date。 Laravel 5.3 及以上版本的 diffForHumans,只需要在 config/app.php 文件中配置 locale 选项即可 : 'locale' => 'zh-CN',
善意提醒 对于那些还没有注意到的读者,近来项目已经迁移到 github 上,你们可以在这个位置找到代码: https://github.com/miguelgrinberg/microblog。 我已经添加了标签指向每个教程步骤,为您提供便利。 时间戳的问题 我们 microblog 应用程序已经忽略很长时间的一个方面就是时间和日期的显示。 到目前为止,我们信任 Python 本身去渲染在我们