2013-04-18 164 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''方法将按钮添加到底部,并将您的文本添加到中心部分 –