2017-08-26 98 views
2

因此,我正在編寫一個程序,將用於自動更新Windows機器。最後一天,我只是保存了當前的程序工作狀態並回家。今天,當我嘗試去處理它時,我注意到它正在編譯,它運行時沒有錯誤,但是沒有結束的javaFx GUI顯示出來。我花了幾個我們的試圖修復。我通過eclipse neon.3清理了這個項目,我重建了meaven項目,我用新的類創建了新的項目,並將代碼複製到它們中。我甚至將項目從Eclipse移動到IntelliJ並在那裏運行。行爲是一樣的。Java FX程序運行和編譯,但不顯示可見的GUI

所以我的主要看起來就是這樣,沒什麼特別的。我加載了主要的對象是tableView和一些輔助信息的主要的fxml,其中 是主要的對象。

@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()); 
} 

上康壽輸出我可以 然後 「關於showMainView()的終結」「tableView.setItems後」讀 這樣就意味着注入依賴已經圓滿結束(我是吧?) 和之後沒有任何錯誤的程序工作,但GUI並不顯示出來

FXML是培訓相關我添加的鏈接,因爲它太大,膏體樣品的其餘部分:https://codepaste.net/z06nzf

回答

2

你忘了打電話給primaryStage.show()。因此你的窗戶永遠不會被看見。

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