gpt4 book ai didi

java - 将 JOptionPane 的 showConfirmDialog 与 Java Application 一起移动

转载 作者:行者123 更新时间:2023-11-29 07:44:18 25 4
gpt4 key购买 nike

我想在应用程序前面显示警告 showConfirmDialog 窗口,即使 GUI 移动到不同的位置,如果我不移动 application 它也能正常工作并按“关闭 ALT+X”按钮,但是如果我将应用程序移动到第二个屏幕,警告 showConfirmDialog 窗口将停留在旧位置,如何将警告窗口与 GUI 一起移动,请给我指示,谢谢。

关闭 ALT+X 按钮

        //close window button
JButton btnCloseWindow = new JButton("Close ALT+X");
btnCloseWindow.setMnemonic('x');
btnCloseWindow.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JFrame frame = new JFrame();

int result = JOptionPane.showConfirmDialog(frame, "Are you sure you want to close the application?", "Please Confirm",JOptionPane.YES_NO_OPTION);
//find the position of GUI and set the value
//dialog.setLocation(10, 20);
if (result == JOptionPane.YES_OPTION)
System.exit(0);
}
});

到目前为止,我尝试将 GUI 位置的位置中心设置为 showConfirmDialog,但没有成功。

最佳答案

JOptionPane 应该相对于其父窗口定位自己。由于您使用新创建且未显示的 JFrame 作为对话框的父窗口,因此对话框只知道将其自身置于屏幕中心。

所以这里的关键不是只使用任何旧的 JFrame 作为父窗口,而是使用你当前显示的 JFrame 或者它显示的组件之一作为父组件,你的第一个参数JOptionPane.showConfirmDialog 方法调用。

那么,如果您将 JButton 设为 final 并将其传递到您的方法调用中呢?

// **** make this final
final JButton btnCloseWindow = new JButton("Close ALT+X"); // ***

// ....

btnCloseWindow.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {

// JFrame frame = new JFrame(); // **** get rid of this ****

// ***** note change? We're using btnCloseWindow as first param.
int result = JOptionPane.showConfirmDialog(btnCloseWindow ,
"Are you sure you want to close the application?",
"Please Confirm",JOptionPane.YES_NO_OPTION);

// ......

关于java - 将 JOptionPane 的 showConfirmDialog 与 Java Application 一起移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27249346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com