【问题标题】:Java fx program run and compile but do not show visible guiJava fx 程序运行和编译但不显示可见 gui
【发布时间】:2017-08-26 09:03:11
【问题描述】:

所以我正在编写一个程序,用于自动更新 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 输出上我可以读取 “在 tableView.setItems 之后” 进而 “在 showMainView() 结束时” 所以这意味着注入依赖已经成功结束(我是对的?) 之后没有任何错误程序正在运行,但 gui 没有出现

fxml 与我添加为链接有关,因为它太大而无法像其他示例一样粘贴:https://codepaste.net/z06nzf

【问题讨论】:

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


    【解决方案1】:

    你忘了打电话给primaryStage.show()。因此,您的窗口永远不会变得可见。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-16
      • 2012-04-27
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多