偶在netbeans6.5下开发一桌面程序,netbeans自动生成了一个主窗口Frameview,想在这个窗口上点击按钮后,弹出一个对话框A,在该对话框A中可以进行数据输入和选择,包括点击A上的某按钮,再弹开一个文件保存的对话框B。但目前偶遇到这样的问题,点击Frameview上的按钮后弹出的对话框A(继承于JDialog类)不能显示在Frameview的正中央,而是位于屏幕左上角,且在A显示的同时,Frameview仍然能点击上面的其他按钮等,而且点击A上面文件选择按钮,会打开一个保存文件的对话框B(是JFileChooser类的showSaveDialog),但该保存文件对话框B却位于A的下面,而不是设计要求的最上面且A在B关闭前是不能进行操作的,类似与MESSAGE窗口,在其关闭前,主窗口不能获得焦点。请问,如何解决这个问题呢

解决方案 »

  1.   

    可能A的构造函数和FrameView对它的调用是关键
      

  2.   

    没人知道吗A的代码如下
    public class JDSave extends javax.swing.JDialog {
    private Component parent;
        /** Creates new form JDSave */
        public JDSave(java.awt.Frame parent, boolean modal) {
            super(parent, modal);
            initComponents();
        }    JDSave(FrameView aThis,String str, boolean b) {
             initComponents();
        }
    ……
    }在主窗口FrameView对它的调用如下:
            JDSave query=new JDSave(this,"查询参数设置",true);
            query.setVisible(true);
      

  3.   

    没人知道吗A的代码如下
    public class JDSave extends javax.swing.JDialog {
    private Component parent;
        /** Creates new form JDSave */
        public JDSave(java.awt.Frame parent, boolean modal) {
            super(parent, modal);
            initComponents();
        }    JDSave(FrameView aThis,String str, boolean b) {
             initComponents();
        }
    ……
    }在主窗口FrameView对它的调用如下:
            JDSave query=new JDSave(this,"查询参数设置",true);
            query.setVisible(true);
      

  4.   

    使用JPanel容器,这样就可以像开发一个窗口一样的控制JPanel中的按钮等组件,并且加载时,可以用GridBagLayout()等布局器控制位置。 JOptionPane.showMessageDialog(null,"你想显示的内容"),类似于Message.show()的效果
      

  5.   

    new JDSave(this,"查询参数设置",true); 
    最后这个参数是设置是否是模式窗口的吗?如果是就是设置这个参数了。你搜一下模式窗口和非模式的区别就知道了。
      

  6.   

    1、关于模态JDialog:netbeans GUI Builder自动生成的构造方法是public NewJDialog(java.awt.Frame parent, boolean modal),你在Frameview中调用是把modal设置为true就哦了。2、关于在Frameview正中间显示Dialog:在Dialog构造方法中initComponents();后面跟一句setLocationRelativeTo(parent);就哦了。