2017-08-26 97 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()"); 
}