我已经将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将其搞砸了会很棒。