1

我对 a 有问题JDesktopPane,我添加JInternalFrame它,然后在 a 上显示它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 回答