当我运行此程序时,它会显示为一个空窗口,直到您全屏显示,然后可以根据需要调整大小,为什么要这样做/如何阻止它?
该程序非常简单,只有一个菜单栏和两个面板分开。
public class SplitPane {
public static void main(String[] args) {
window view = new window();
}
private static class window extends JFrame {
public window() {
this.setSize(1000, 750);
this.setVisible(true);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
//menubar is here, must lower code quantity for stack
//panels
//graph half
JPanel graphRep = new JPanel();
//Background colour - graphRep.setBackground(Color.RED);
graphRep.setVisible(true);
String graphTitle = "Textual Representation.";
Border graphBorder = BorderFactory.createTitledBorder(graphTitle);
graphRep.setBorder(graphBorder);
//text half
JPanel textRep = new JPanel();
textRep.setVisible(true);
String textTitle = "Graphical Representation.";
Border textBorder = BorderFactory.createTitledBorder(textTitle);
textRep.setBorder(textBorder);
//splitpane
JSplitPane splitPane = new JSplitPane();
splitPane.setSize(600, 750);
splitPane.setOrientation(JSplitPane.HORIZONTAL_SPLIT);
splitPane.setOneTouchExpandable(true);
splitPane.setDividerSize(10);
splitPane.setDividerLocation(250);
splitPane.setLeftComponent(graphRep);
splitPane.setRightComponent(textRep);
this.add(splitPane);
}
}
答案 0 :(得分:2)
this.setVisible(true);
在向框架添加组件之前,您可以看到框架。永远不会调用布局管理器,因此所有组件的大小都保持为(0,0),因此无需绘制任何内容。
在将所有组件添加到框架后,框架应该可见。
代码应该是:
frame.pack();
frame.setVisible();
因此每个组件都以适当的大小显示。不要对size()进行硬编码,因为您不知道用户屏幕的大小可能是什么。