2012-09-06 88 views
0

我在鞦韆上應用程序的工作使用JinternalFrames但是當我打開一個Jinternelframe它出現在JDesktopePane與同一組件的另一個實例出現在另一個點擊的一個實例。 我試圖通過聲明JInternalFrame的每一個在構造函數的新實例來解決這個問題,但在內存方面也沒用,所以我問,如果有任何梅索德擺脫這個問題。 非常感謝你們。的JInternalFrame

+0

哦謝謝您的建議可以幫助:-D –

回答

2

懶惰-INIT幀:

private JInternalFrame frame1; 
private JInternalFrame frame2; 
... 

/** 
* invoked when the button used to show the first frame is clicked 
*/ 
private void showFrame1() { 
    if (frame1 == null) { 
     frame1 = new JInternalFrame(); 
     // TODO initialize the frame 
    } 
    // TODO show the frame 
} 

// same for the other frames 
+0

謝謝,我忘了singleTone設計模式:d –

+3

作爲反對和絃設計模式? – Dave

+3

謹防濫用singletone模式:它可以迅速導致雜音;-) –

0

下面是可能的樣本代碼。希望這個幫助。 菜單操作調用內部框架中的主要應用JDesktopPane的地方在裏面。

private void YourJinternalFrameMenuItemActionPerformed(java.awt.event.ActionEvent evt) {             

    YourJinternalFrame nw = YourJinternalFrame.getInstance(); 
    nw.pack(); 
    //usefull part for you.. if open shows, if not creates new one 
    if (nw.isVisible()) { 
    } else { 
     desktopPane.add(nw); 
     nw.setVisible(true); 
    } 
    try { 

     nw.setMaximum(true); 
    } catch (PropertyVetoException ex) { 
     Logger.getLogger(MainApplication.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 

把你YourJinternalFrame的這裏面

private static YourJinternalFrame myInstance; 

public static YourJinternalFrame getInstance() { 
    if (myInstance == null) { 
    myInstance = new YourJinternalFrame(); 
    } 
return myInstance;