所以我正在编写一个程序,用于自动更新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
答案 0 :(得分:2)
您忘了拨打primaryStage.show()
。因此,您的窗口永远不可见。
public void showMainView() throws IOException{
...
primaryStage.setScene(scene);
primaryStage.show();
System.out.println("On the end of showMainView()");
}