JInternalFrames并不总是出现

时间:2015-08-02 03:59:19

标签: java swing jinternalframe jdesktoppane

我已经将4个JInternalFrame添加到JDesktopPane中,然后将其添加到JRibbonFrame的内容窗格中(我正在使用Flaming api)。我将JDesktopPand添加到JRibbonFrame,将JRibbonFrame设置为visible,然后将JInternalFrame添加到JDesktopPane。我之后添加了JInternalFrames,因为它们是根据JDesktopPane的大小设置的,并且在将JRibbonFrame设置为可见之前JDesktopPane的高度和宽度为0。

问题是JInternalFrames并不总是出现。如果其中一个出现,那么任何在它出现后添加的。问题是我需要它们一致地出现。

代码:

public class Window extends JRibbonFrame{
    public Window(){
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setExtendedState(JFrame.MAXIMIZED_BOTH);
        Desktop pane = new Desktop();
        getContentPane().add(pane);
        setVisible(true);
        pane.placeComponents();
    }
}
public class Desktop extends JDesktopPane{
    private JInternalFrame frame1, frame2, frame3, frame4;
    public Desktop(){
        super();
    }
    public void placeComponents(){
        frame1 = new JInternalFrame("", true);
        frame1.setVisible(true);
        frame1.setLocation(new Point(0, 0));
        frame1.setSize(new Dimension(400, getHeight()));
        add(frame1);
        frame2 = new JInternalFrame("", true);
        frame2.setVisible(true);
        frame2.setLocation(new Point(frame1.getWidth(), 0));
        frame2.setSize(new Dimension(getWidth() - frame1.getWidth(), 350));
        add(frame2);
        frame3 = new JInternalFrame("", true);
        frame3.setLocation(new Point(frame1.getWidth(), frame2.getHeight()));
        frame3.setSize(new Dimension(600, getHeight() - frame2.getHeight()));
        frame3.setVisible(true);
        add(frame3);
        frame4 = new JInternalFrame("", true);
        frame4.setLocation(new Point(frame1.getWidth() + frame3.getWidth(), frame2.getHeight()));
        frame4.setSize(new Dimension(getWidth() - frame1.getWidth() - frame3.getWidth(), getHeight() - frame2.getHeight()));
        frame4.setVisible(true);
        add(frame4);
    }
}

` 编辑:我尝试使用Window扩展JFrame这样做,它工作正常。如果有人能够解释为什么JRibbonFrame将其搞砸了会很棒。

0 个答案:

没有答案