1

に問題がありJDesktopPane、追加JInternalFrameしてから に表示しJFrameます。

JInternalFrame 問題は、実行時に別のものを追加しようとしたときです。

同じ方法を使用して同じものを追加しJInternalFrameますが、そのdosntが表示されます。

public class Desktop extends JDesktopPane {
    (...)
    public void addJInternalFrameBox(JInternalFrameBox jifb) {
     this.add(jifb, desktop.CENTER_ALIGNMENT);
     this.repaint();
     this.validate();
    }
}

JInternalFrameBox クラス:

public class JInternalFrameBox extends JInternalFrame {
    (...)
    public JInternalFrameBox(Integer id) {
        this.id = id;
        setUpFrame();
    }
    public void setUpFrame() {
        JLabel lbl = new JLabel("test");
        lbl.setVisible(true);

        this.add(lbl);
        this.setPreferredSize(INTERNAL_FRAME_SIZE);
        this.setLocation(100, 100);
        this.setIconifiable(true);
        this.setClosable(true);
        this.pack();
        this.setVisible(true);
    }
}    

jButtonBox JInternalFrameBox を開くボタン:

public class jButtonBox extends JButton implements MouseListener {
    public void mouseReleased(MouseEvent e) {
        JInternalFrameBox jifb = new JInternalFrameBox(id);
        jifb.setVisible(true);
        Desktop df = Desktop.getInstance();
        df.addJInternalFrameBox(jifb);
    }
    (...)
}
4

3 に答える 3

4

実際の例については、内部フレームの使用方法に関する Swing チュートリアルのセクションを参照してください。

于 2011-09-23T15:40:09.543 に答える
3

デスクトップに JPanel を使用するのではなく、JDesktopPane を使用してください。それは特にそのためのものです。

于 2011-09-23T16:34:43.737 に答える
1

次のように、内部フレームの位置とサイズの両方を設定する必要があります。

    setSize(INTERNAL_FRAME_SIZE); // instead of setPref
    setLocation(100, 100);

うーん...多分そうではありません(コードでパックを見ただけです)-他の人がすでに述べたように、sscceなしで推測する必要はもうありません

于 2011-09-24T08:29:22.940 に答える