JavaFX 8:如何在启动时自动输入文件?
JavaFX 8: How to automatically input a file on start-up?
我在带有 SceneBuilder 的 IntelliJ 中使用 JavaFX 8 和 JDK 1.8.0_77。我创建了一个基本的像素编辑器应用程序。我有两个 windows(阶段)。一个是放置在网格窗格中的 32x128 圆形对象矩阵,另一个是 Main 中的消息中心。
您可以在 window 查看消息中心:https://virtualartsite.wordpress.com/message-center/
我想使用 消息中心 应用程序保存消息,并在同样为 32x128 的 RGB LED 矩阵上滚动它们。我将消息保存在 ArrayList<> 中 Message对象和我将 ArrayList 的消息 写入序列化文件。我编写文件调用 writeObjArrayList () 并输入文件调用 readObjArrayList().
我能够成功写入和读取文件,并且 .add 所有 Message 在启动时反对 ArrayList,因此用户可以编辑或删除 中的任何消息viewMessages 组合框。但是到目前为止,如果我使用按钮事件调用 readObjArrayList(),我只能这样做。就是这个问题。
我想在应用程序启动时“在幕后”读取文件。我想在程序启动时自动读取文件;用户不必点击按钮。
我最好的想法是使用以下编译但似乎不执行任何代码的代码:
public void windowEvents(WindowEvent event){
if(event.getSource() == viewMessages) readObjArrayList();
}
我认为 WindowEvent 会被 windowEvents= 触发#OnShow 对于 ComboBox,viewMessages(FX:ID).
请指教
感谢您的帮助。
根据 javadoc,Window事件与 Window showing/hiding 操作有关。由于节点 class 不是 Windows,因此在其上安装 Window 事件处理程序不会有任何效果。
由于您使用的是 SceneBuilder,我假设您必须有一个定义了 fx:controller
class 的 FXML 文件。在任何控制器 class 中,您可以添加一个非参数 initialize()
方法,该方法将在处理完 FXML 文件后立即调用。
public class YourController {
@FXML
ComboBox viewMessages;
public void initialize() {
readObjArrayList();
}
private void readObjArrayList() {
...
}
}
我在带有 SceneBuilder 的 IntelliJ 中使用 JavaFX 8 和 JDK 1.8.0_77。我创建了一个基本的像素编辑器应用程序。我有两个 windows(阶段)。一个是放置在网格窗格中的 32x128 圆形对象矩阵,另一个是 Main 中的消息中心。
您可以在 window 查看消息中心:https://virtualartsite.wordpress.com/message-center/
我想使用 消息中心 应用程序保存消息,并在同样为 32x128 的 RGB LED 矩阵上滚动它们。我将消息保存在 ArrayList<> 中 Message对象和我将 ArrayList 的消息 写入序列化文件。我编写文件调用 writeObjArrayList () 并输入文件调用 readObjArrayList().
我能够成功写入和读取文件,并且 .add 所有 Message 在启动时反对 ArrayList,因此用户可以编辑或删除 中的任何消息viewMessages 组合框。但是到目前为止,如果我使用按钮事件调用 readObjArrayList(),我只能这样做。就是这个问题。
我想在应用程序启动时“在幕后”读取文件。我想在程序启动时自动读取文件;用户不必点击按钮。
我最好的想法是使用以下编译但似乎不执行任何代码的代码:
public void windowEvents(WindowEvent event){
if(event.getSource() == viewMessages) readObjArrayList();
}
我认为 WindowEvent 会被 windowEvents= 触发#OnShow 对于 ComboBox,viewMessages(FX:ID).
请指教
感谢您的帮助。
根据 javadoc,Window事件与 Window showing/hiding 操作有关。由于节点 class 不是 Windows,因此在其上安装 Window 事件处理程序不会有任何效果。
由于您使用的是 SceneBuilder,我假设您必须有一个定义了 fx:controller
class 的 FXML 文件。在任何控制器 class 中,您可以添加一个非参数 initialize()
方法,该方法将在处理完 FXML 文件后立即调用。
public class YourController {
@FXML
ComboBox viewMessages;
public void initialize() {
readObjArrayList();
}
private void readObjArrayList() {
...
}
}