Java Swing-can';Windows中带模态JDialog的t开关语言

Java Swing-can';Windows中带模态JDialog的t开关语言,java,swing,jdialog,modality,Java,Swing,Jdialog,Modality,我在WindowsXP中遇到了一个关于模态jdialog的奇怪问题。当对话框处于焦点时,我不能用alt+shift切换windows语言。我不希望父帧可以访问。请帮帮我 public class MyDialog extends JDialog { public MyDialog(java.awt.Frame parent, boolean modal) { super(parent, modal); initComponents(

我在WindowsXP中遇到了一个关于模态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);
                }
            });
        }
    }

我在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框架与Swing JDialog混合使用:-),最好使用相同的组件类型,我也尝试过,但没有成功:-)请耐心等待。我不明白我在哪里混合了Frame和JDialog?我需要在我的代码中更改什么?@Ivan Ivanovich我认为正确的构造函数应该是
public MyDialog(JFrame parent,boolean modal){
确定是否存在任何JFrame,所以如果JFrame不可见,它就不“存在”?我正在尝试使用您发布的代码。请帮助我理解。