JavaFX中的关闭对话框
我在JavaFX中有一个简单的对话框:JavaFX中的关闭对话框,java,javafx-2,javafx,Java,Javafx 2,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
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();
Stage dialogStage=newstage();
dialogStage.InitModal(MODAL.WINDOW_MODAL);
dialogStage.setScene(新场景(VBoxBuilder.create())
.children(新文本)、新按钮(“关闭”).setOnAction(新事件处理程序(){
@凌驾
公共无效句柄(ActionEvent e){
aboutDialog();
}
})).alignment(Pos.CENTER).padding(新插图(5)).build(),xSize,ySize,backgroundColor));
dialogStage.show();
但是我在Netbeans中得到了这个错误消息:这里不允许使用'void'类型
您能告诉em使用close
按钮关闭对话框的正确方法是什么吗?而不是
@Override
public void handle(ActionEvent e) {
aboutDialog();
}
试一试
此处不允许使用
'void'类型
,因为当调用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();
按钮,但=新按钮(“关闭”);
但是.setOnAction(新的EventHandler(){
@凌驾
公共无效句柄(ActionEvent e){
aboutDialog();
}
});
Stage dialogStage=新阶段();
dialogStage.InitModal(MODAL.WINDOW_MODAL);
dialogStage.setScene(新场景(VBoxBuilder.create())
.children(新文本(Text),但是).alignment(Pos.CENTER).padding(新插入(5)).build(),xSize,ySize,backgroundColor));
dialogStage.show();
当前,当按下关闭按钮时,将调用名为“aboutDialog”的方法。它的作用是什么?它只是一个小的对话框窗口。这不是我的问题,但是,我只是发布了一个代码片段,它适用于您想要做的事情。为什么不使用showAndWait()而不是show()?只是为了提供一些信息,您可以简化“onAction”声明:new Button(“Close”)。setOnAction(e->aboutDialog())
。谢谢!我可以问您如何将按钮放置在对话框底部吗?您应该创建一个边框窗格
而不是VBox
,并使用setBottom
方法将按钮添加到底部,然后将文本添加到中间部分hmm我很好奇,因为我认为close()
会释放对话框中的资源,而hide
只会使对话框消失,我可能是错的
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();