单击按钮退出窗口Java_关于如何通过单击按钮关闭Java窗口:如何通过单击按钮关闭Java窗口-JavaFX Project...

我创建了一个JavaFX项目,并在Java Scene Builder中为第一个登录框架创建了GUI。成功登录后,必须关闭登录框架,并且下一个框架必须可见(主程序框架)。我可以使新框架出现,但不能使登录框架关闭。我尝试了dispose()之类的东西,但没有任何效果。下面是主类的代码:

public class KuberComm extends Application {

@Override

public void start(Stage stage) throws Exception {

Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));

Scene scene = new Scene(root);

stage.setResizable(false);

stage.setTitle("Login to KuberComm");

stage.setScene(scene);

stage.show();

}

/**

* @param args the command line arguments

*/

public static void main(String[] args) {

launch(args);

}

}

登录按钮的处理程序位于另一个类(由NetBeans IDE制成的控制器类)中。我无法弄清楚框架的名称是什么,以便在控制器类中使用它。

任何帮助将不胜感激!

也许这个答案很有用。看看这个。通过控制器关闭fxml窗口

在控制器类中给按钮命名:

@FXML

public Button closeButton;

并添加此方法:

@FXML

public void handleCloseButtonAction(ActionEvent event) {

Stage stage = (Stage) closeButton.getScene().getWindow();

stage.close();

}

在FXML中,您需要引用按钮名称和调用onAction的方法:

这将关闭此按钮处于打开状态的阶段。

如果使用此方法,Platform.runLater()将不再运行来自此特定控制器的任何Runnable。不要问我为什么。

与其他答案类似,但更精确。

@FXML

public void handleCloseButtonAction(ActionEvent event) {

((Stage)(((Button)event.getSource()).getScene().getWindow())).close();

}

由于某些原因,我不得不将Button强制转换为Node强制转换,但否则可以正常工作。

使用

stage.hide()

如果从控制器执行此操作,则可以从舞台场景内的任何Node中获取舞台(如有必要,请FXML加载器使用的id属性将一个分配给控制器的字段) fxml中的fxml命名空间):

Window stage = node.getScene().getWindow();

根据文档docs.oracle.com/javase/8/javafx/api/javafx/stage/…,stage.close()等同于Window.hide()。

@kervin那又怎样呢?两者都会关闭该阶段,但是如果使用最后一个代码段访问该阶段,则使用hide()不需要强制转换。这正是手术医生问的,不是吗???

感谢您的答复,但最后我找到了解决方法。我用

((Node)(event.getSource())).getScene().getWindow().hide();

中的

表示成功登录。我的意思是,在出现对话框通知用户成功登录之后,该代码就在那里了。

(为了使该行代码正常工作,我也导入了正确的内容)

隐藏不会关闭窗口,只是处于可见模式。最好的解决方案是:

@FXML

private void exitButtonOnAction(ActionEvent event){

((Stage)(((Button)event.getSource()).getScene().getWindow())).close();

}

尽管

getScene().getWindow();

在Node上的

将带您进入控制器的舞台,请务必注意,调用close()或hide()是等效的,并且只会使登录窗口不可见。至于使用dispose():

此链接可能有助于清除任何混乱。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值