java - 使用 SceneBuilder 在 JavaFX 项目开始时调用函数
问题描述
我使用 SceneBuilder 为我的项目创建了一个 GUI,并设置了所有按钮 ID 并为 FXML 文件创建了一个控制器。我希望在启动时和整个程序中在文本区域运行实时时钟。这是我第一次使用 FXML 在 JavaFX 中创建项目,所以我很困惑我应该将这段代码放在哪里。通常,代码在没有 FXML 的简单程序中工作,它是以下代码:
package com.example;
import example;
public class Layout extends Application {
TextArea clock;
public void start(Stage stage) throws FileNotFoundException {
clock = new TextArea();
clock.setEditable(false);
BorderPane bp = new BorderPane();
bp.setTop(clock);
refreshClock();
Scene scene = new Scene(bp);
stage.setScene(scene);
stage.show();
}
}
private void refreshClock()
{
Thread refreshClock = new Thread()
{
public void run()
{
while (true)
{
Date dte = new Date();
String topMenuStr = " " + dte.toString();
clock.setText(topMenuStr);
try
{
sleep(3000L);
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
} // end while ( true )
} // end run thread
};
refreshClock.start();
}
当我尝试在我的 Ui 控制器类中执行我当前的进度时,尽管我做了什么代码并且我不确定下一步该做什么,但文本区域中没有弹出任何内容。这段代码应该在我的主 .java 文件中吗?这是我尝试过的:
package application;
import java.util.Date;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.control.TextArea;
public class UiController {
@FXML
private TextArea clockTextArea;
private void refreshClock()
{
Thread refreshClock = new Thread()
{
public void run()
{
while (true)
{
Date dte = new Date();
String topMenuStr = " " + dte.toString();
clockTextArea.setText(topMenuStr);
try
{
sleep(3000L);
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
} // end while ( true )
} // end run thread
};
refreshClock.start();
}
public void initialize() {
refreshClock();
}
解决方案
在 javafx 中,您使用initialize()
方法中的事件。
例如button.setOnAction(e -> System.Exit(0));
或clock.onMouseClicked(e -> System.out.println("Test"));
推荐阅读
- ruby-on-rails - 无法加载此类文件 -- exception_notification (LoadError)
- python - Pyinstaller exe 文件不工作/打开
- node.js - 如何在不复制的情况下将 Int32Array 转换为 Uint8Array
- python - 如何模拟由类的对象调用的函数?
- linux - Cron 作业在同一时间在可用 VM 中运行多次
- javascript - 如何使用ajax插入的按钮和输入字段?
- php - WooCommerce 订阅将额外费用添加到购物车总计一次购买
- r - 在基础 R 的表函数中显示额外值
- php - php 在类方法中返回 $this
- c++ - C++ while循环即使在条件变为假后也不会终止