【问题标题】:Swing - can't switch language in Windows with modal JDialogSwing - 无法使用模态 JDialog 在 Windows 中切换语言
【发布时间】:2012-03-22 13:29:39
【问题描述】:

我在 windows xp 中的模态 jdialog 有一个奇怪的问题。它接缝我无法在对话框集中时使用 alt+shift 切换 Windows 语言。我不希望父框架可以访问。请帮我。

public class MyDialog extends JDialog {
        public MyDialog(java.awt.Frame parent, boolean modal) {
            super(parent, modal);
            initComponents();
        }
        public static void main(String args[]) {   
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    MyDialog dialog = new MyDialog(new javax.swing.JFrame(), true);
                    dialog.setVisible(true);
                }
            });
        }
    }

【问题讨论】:

    标签: java swing jdialog modality


    【解决方案1】:

    我尝试了您的示例,但没有任何成功,Toolkit is never locked,WinXp / Win2008 上的 Java6

    同样的

    • 带有 AWT 对话框的 AWT 框架

    • 带有 Swing JDialog 的 AWT 框架

    • 带有 Swing JDialog 的 Swing JFrame

    • 带有 AWT 对话框的 Swing JFrame

    基于代码示例

    import javax.swing.JDialog;
    import javax.swing.JFrame;
    
    public class MyDialog {
    
        private JFrame frame = new JFrame();
        private JDialog dialog = new JDialog();
    
        public MyDialog() {
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(400, 300);
            frame.setVisible(true);
            //dialog = new JDialog(frame, JDialog.ModalityType.TOOLKIT_MODAL);
            dialog = new JDialog(frame, true);
            dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
            dialog.setModal(true);
            dialog.setSize(300, 200);
            dialog.setVisible(true);
        }
    
        public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
    
                public void run() {
                    MyDialog dialog = new MyDialog();
                }
            });
        }
    }  
    

    【讨论】:

    • 谢谢!如果我注释掉frame.setVisible(true); 为什么会出现我的问题?
    • 可能是因为您将 AWT Frame 与 Swing JDialog 混合使用 :-),最好使用相同的组件类型,我也尝试过,但没有成功 :-)
    • 请多多包涵。我不明白我在哪里混合 Frame 和 JDialog?我需要在我的代码中更改什么?
    • @Ivan Ivanovich 我认为正确的构造函数应该是public MyDialog(JFrame parent, boolean modal) { 确定是否存在任何JFrame,
    • 所以如果 JFrame 不可见,它不是“存在”吗?我正在尝试使用您发布的代码。请帮我理解。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-06
    • 1970-01-01
    • 2014-04-23
    • 2018-12-21
    相关资源
    最近更新 更多