JavaFX 8:如何在启动时自动输入文件?

时间:2016-03-29 00:17:09

标签: intellij-idea javafx-8 scenebuilder

我在使用SceneBuilder的IntelliJ中使用JavaFX 8和JDK 1.8.0_77。我创建了一个基本的像素编辑器应用我有两个窗口(阶段)。一个是放置在网格窗格中的32x128圆形对象矩阵,另一个是Main中的消息中心。

您可以在以下位置看到消息中心窗口:https://virtualartsite.wordpress.com/message-center/

我想使用 消息中心 应用保存消息,然后将它们滚动到也是32x128的RGB LED矩阵上。我将消息保存在 消息 对象的 ArrayList<> 中,然后我写了 ArrayList的消息 到序列化文件。我编写了调用 writeObjArrayList()的文件并输入调用 readObjArrayList()的文件。

我能够成功地写入和读取文件, .add 所有 消息 对象 ArrayList启动时 ,以便用户可以编辑或删除 viewMessages ComboBox中的任何消息。但到目前为止,我只能使用按钮事件来调用 readObjArrayList() 。这就是问题所在。

我想在应用程序启动时阅读“幕后”文件。我想在程序启动时自动读取文件;用户不必点击按钮。

我最好的想法是使用以下代码编译但似乎不执行任何代码:

    public void windowEvents(WindowEvent event){
    if(event.getSource() == viewMessages) readObjArrayList();
}

我认为 WindowEvent 会被ComboBox的 windowEvents = #OnsShow 触发, viewMessages(FX:ID)。

请告知。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

根据javadoc,WindowEvent与 Window 显示/隐藏动作相关。由于Node类不是Windows,因此在其上安装WindowEvent处理程序不会产生任何影响。

由于您使用的是SceneBuilder,我认为您必须拥有一个定义了fx:controller类的FXML文件。在任何控制器类中,您都可以添加一个非arg initialize()方法,该方法将在处理FXML文件后立即调用。

public class YourController {
    @FXML
    ComboBox viewMessages;

    public void initialize() {
        readObjArrayList();
    }

    private void readObjArrayList() {
        ...
    }
}