Java基本GUI空白

时间:2017-10-31 20:11:37

标签: java swing user-interface

当我运行此程序时,它会显示为一个空窗口,直到您全屏显示,然后可以根据需要调整大小,为什么要这样做/如何阻止它?

该程序非常简单,只有一个菜单栏和两个面板分开。

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);
        }
    }

1 个答案:

答案 0 :(得分:2)

this.setVisible(true);

在向框架添加组件之前,您可以看到框架。永远不会调用布局管理器,因此所有组件的大小都保持为(0,0),因此无需绘制任何内容。

在将所有组件添加到框架后,框架应该可见。

代码应该是:

frame.pack();
frame.setVisible();

因此每个组件都以适当的大小显示。不要对size()进行硬编码,因为您不知道用户屏幕的大小可能是什么。