周末的时候,一位网友让我帮他把他的无模式对话框改成有模式对话框。
界面是有swing制作的,都是JFrame,我从来没有接触过swing编程。大致的代码还是看的懂,很多都和C#很相似。
然后就去查资料,JAVA的模式对话框是如何调用的。终于查到了需要用到JDialog类,JDialog的构造函数里可以指定是否是模式对话框。
1 public JDialog(Frame owner, String title, boolean modal) { 2 super(owner == null? SwingUtilities.getSharedOwnerFrame() : owner, 3 title, modal); 4 if (owner == null) { 5 WindowListener ownerShutdownListener = 6 (WindowListener)SwingUtilities.getSharedOwnerFrameShutdownListener(); 7 addWindowListener(ownerShutdownListener); 8 } 9 dialogInit(); 10 }
于是建立一个模式对话框很容易,但是怎么把原来的JFrame界面调用,改成模式对话框还是不明白,结果我进入了一个误区,就是先创建模式对话框,
然后把Jframe加载进来,结果发现怎么弄,都不行。出去转了一圈,终于想到JDialog也是JFrame的一种,直接把Jframe改成JDialog不就行了吗?回来后,
直接改代码,如下:
1 // 这里父类由JFrame改成JDialog 2 public class DataBaseJFrameDlg extends javax.swing.JDialog { 3 4 private JCounterJFrame iframe; 5 6 /** Creates new form DataBaseJFrameDlg */ 7 public DataBaseJFrameDlg(JCounterJFrame pframe) { 8 // 这里父类的构造方法改成JDialog的 9 super(pframe, "数据库管理", true); 10 this.iframe = pframe; 11 initComponents(); 12 } 13 ... 14 }
编译后,运行,发现问题解决。