2013-04-18 170 views
-1

關閉對話框我有這個簡單的對話框中的JavaFX:JavaFX中

Stage dialogStage = new Stage(); 
     dialogStage.initModality(Modality.WINDOW_MODAL); 
     dialogStage.setScene(new Scene(VBoxBuilder.create() 
       .children(new Text(text), new Button("Close")).alignment(Pos.CENTER).padding(new Insets(5)).build(), xSize, ySize, backgroundColor)); 
     dialogStage.show(); 

我想關閉該對話框,當我點擊一個Close按鈕,所以我修改了代碼是這樣的:

Stage dialogStage = new Stage(); 
     dialogStage.initModality(Modality.WINDOW_MODAL); 
     dialogStage.setScene(new Scene(VBoxBuilder.create() 
       .children(new Text(text), new Button("Close").setOnAction(new EventHandler<ActionEvent>() { 
      @Override 
      public void handle(ActionEvent e) { 
       aboutDialog(); 
      } 
     })).alignment(Pos.CENTER).padding(new Insets(5)).build(), xSize, ySize, backgroundColor)); 
     dialogStage.show(); 

但是我在Netbeans中得到這個錯誤信息:'void' type not allowed here

你能告訴他們什麼是使用Close按鈕關閉對話框的正確方法嗎?

+0

目前,當關閉按鈕被擊中,被稱爲一個名爲「aboutDialog」的方法。它有什麼作用? – Sebastian

+0

這只是一個小對話窗口。 –

+0

這不是我的問題,但是,我只是發佈了一個適用於您想要的代碼片段。 – Sebastian

回答

0

代替

@Override 
public void handle(ActionEvent e) { 
    aboutDialog(); 
} 

嘗試

@Override 
public void handle(ActionEvent e) { 
    dialogStage.hide(); 
} 
+1

hmmm我很好奇因爲我認爲'close()'會釋放資源,而'hide'只會讓對話消失,所以我可能會出錯 – niceman

0

你有'void' type not allowed here因爲當你調用setOnAction方法返回一個void對象。爲了避免這個問題,你需要有處理程序的製作工具之外是這樣的:

Button but = new Button("Close"); 
but.setOnAction(new EventHandler<ActionEvent>() { 
    @Override 
    public void handle(ActionEvent e) { 
     aboutDialog(); 
    } 
}); 

Stage dialogStage = new Stage(); 
dialogStage.initModality(Modality.WINDOW_MODAL); 
dialogStage.setScene(new Scene(VBoxBuilder.create() 
       .children(new Text(text), but).alignment(Pos.CENTER).padding(new Insets(5)).build(), xSize, ySize, backgroundColor)); 
dialogStage.show(); 
+0

謝謝!我可以問你怎麼把按鈕放在對話框的底部嗎? –

+0

您應該創建一個''BorderPane''而不是''VBox'',並使用''setBottom''方法將按鈕添加到底部,並將您的文本添加到中心部分 –