【问题标题】:JDialog close if click out of JDialog如果单击退出 JDialog,则 JDialog 关闭
【发布时间】:2019-12-16 15:23:28
【问题描述】:

如果我点击退出 JDialog,我只想关闭 JDialog

import javax.swing.JDialog;
import javax.swing.JLabel;


public class DialogFenster extends JDialog {

    public DialogFenster(String pText, String pTitel)
    {
        JDialog meinJDialog = new JDialog();
        meinJDialog.setTitle(pTitel);
        meinJDialog.setBounds(800, 500, 300, 70);
        meinJDialog.setModal(true);
        meinJDialog.add(new JLabel(pText));
        meinJDialog.setVisible(true);
    }
}

【问题讨论】:

  • 这行不通,因为没有任何东西接收到点击事件,并且由于对话框是模态的,您的应用程序中的其他任何东西都无法接收任何事件。
  • 使其成为非模态并拦截 onFocusLost。可能用半透明灰色面板覆盖主 JFrame 接收点击。
  • 听起来您可能想要Popup 而不是JDialog。

标签: java swing user-interface jdialog


【解决方案1】:

您可以使用WindowListener 来了解对话框是否失去焦点:

JDialog dialog = new JDialog(frame, false);//false for not modal
dialog.addWindowListener(new WindowAdapter() {
    public void windowDeactivated(WindowEvent e) {
        dialog.dispose();
    }
});
dialog.setVisible(true);

但它必须是非模态对话框。如果是模态的,windowDeactivated 将永远不会被调用。

【讨论】:

    猜你喜欢
    • 2010-12-13
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多