周末的時候,一位網友讓我幫他把他的無模式對話框改成有模式對話框。
界面是由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 }
編譯后,運行,發現問題解決。