Java fx程序运行并编译但不显示可见的gui

时间:2017-08-26 09:03:12

标签: java user-interface intellij-idea javafx-8 eclipse-neon

所以我正在编写一个程序,用于自动更新Windows机器。最后一天,我只是保存当前的工作状态,然后回家。今天当我尝试使用它时,我注意到它正在编译并且它运行没有错误但是非终端javaFx GUI正在显示。我花了几个时间试图修复它。我通过eclipse neon.3清理了项目。我重建了meaven项目,我用新类创建了新项目,只是将代码复制到它们中。我甚至将项目从Eclipse移到IntelliJ并在那里运行。行为是一样的。

所以我的主要看起来那样,没什么特别的。我加载主要的fxml 主要对象是tableView和一些侧面信息。

@Override
public void start(Stage primaryStage) throws IOException, InterruptedException, InvalidFormatException {
    tableList = makeMainList();
    JavaFXmainClass.primaryStage = primaryStage;
    JavaFXmainClass.primaryStage.setTitle("xD Pro Windows Updater Manager Ascendet Master OP xD");
    showMainView();
}

public void showMainView() throws IOException{
    final FXMLLoader loader = new FXMLLoader();
    System.out.println(this.getClass().getResource("fxml//MainView.fxml"));
    loader.setLocation(this.getClass().getResource("fxml//MainView.fxml"));
    mainLayout = loader.load();
    Scene scene = new Scene(mainLayout);
    primaryStage.setScene(scene);
    System.out.println("On the end of showMainView()");
}

public static void main(String[] args) {
    launch(args);
}

在主控制器中,我以这种方式初始化表。

@Override
public void initialize(URL arg0, ResourceBundle arg1) {
    //setting combobox items
    StartTime.getItems().addAll(comboBoxValues);
    EndTime.getItems().addAll(comboBoxValues);
    StartTime.setPromptText("Start Time");
    EndTime.setPromptText("End Time");
    //adding listiner for combobox
    addComboBoxChangeListiner(StartTime, What.STARTTIME);
    addComboBoxChangeListiner(EndTime, What.ENDTIME);

    setColumns();
    mainTable = JavaFXmainClass.getTableList();
    tableList = fromArrayToObservableArray(mainTable, tableList);
    System.out.println(mainTable.size());
    System.out.println("before tableView.setItems");
    tableView.setItems(mainTable);
    System.out.println("after tableView.setItems");
}

private void setColumns() {
    tableView.setFixedCellSize(35);
    id.setCellValueFactory(new PropertyValueFactory<Id,Integer>("id"));
    ip.setCellValueFactory(new PropertyValueFactory<Server,String>("ip"));
    name.setCellValueFactory(new PropertyValueFactory<Server,String>("name"));
    type.setCellValueFactory(new PropertyValueFactory<Server,String>("type"));
    date.setCellValueFactory(new PropertyValueFactory<Server,LocalDate>("date"));
    id.setCellFactory(new LineNumberCellFactory());
    ip.setCellFactory(new getObjectIp());
}
关于consol输出的

我可以阅读 &#34;在tableView.setItems&#34;之后 然后 &#34;在showMainView()&#34;的最后 这意味着注入依赖关系已成功结束(我是对的?) 之后没有任何错误程序正在运行,但是gui没有出现

fxml是相关的,我添加为链接,因为它太大而不能像其他样本一样粘贴:https://codepaste.net/z06nzf

1 个答案:

答案 0 :(得分:2)

您忘了拨打primaryStage.show()。因此,您的窗口永远不可见。

public void showMainView() throws IOException{
    ...
    primaryStage.setScene(scene);
    primaryStage.show();
    System.out.println("On the end of showMainView()");
}