0

JinternalFramesを使用してSwingアプリケーションに取り組んでいますが、1つのJinternelframeを開くと、JDesktopePaneに表示され、同じコンポーネントをもう一度クリックすると、別のインスタンスが表示されます。コンストラクターで各JInternalFrameの新しいインスタンスを宣言することでこの問題を修正しようとしましたが、メモリ側では役に立たないため、この問題を取り除く方法があるかどうかを尋ねています。どうもありがとうございました。

4

2 に答える 2

2

レイジー-フレームを初期化します:

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
于 2012-09-06T13:43:23.233 に答える
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;
于 2013-03-25T21:33:32.543 に答える