JFrame没有显示Jpanel的权利

时间:2016-01-20 12:55:36

标签: java swing jframe layout-manager

我使用的是大小为800x600的JFrame。 我试图做的是:

enter image description here

黑色面板内有2个其他面板,每个面板大小为300x300。

结果是黑色面板位于左侧(如图所示),红色面板位于中央,框架和面板之间有一个间隙。另外,如果我移除黑色面板,右侧面板将填满整个框架...

这是代码:

    //create the left part of the screen
    JPanel leftPanels = new JPanel();
    leftPanels.setLayout(new GridLayout(2,1));
    leftPanels.setSize(new Dimension(300,600));
    // just to illustrate the 2 panels inside of the black panel.
    //leftPanels.add(new JPanel());
    //leftPanels.add(new JPanel());

    //create the right part
    JPanel rightPanel = new JPanel();
    rightPanel.setSize(new Dimension(500,600));
    rightPanel.setBackground(Color.red);

    this.add(leftPanels);
    this.add(rightPanel);

    this.validate();
    this.repaint();

有一种简单的方法可以解决这个问题吗?

我还在JFrame上尝试了一个Gridlayout,但它给了我2个400X600的面板

3 个答案:

答案 0 :(得分:1)

首先,像这样使用FlowLayout

setLayout(new FlowLayout(FlowLayout.LEFT));

其次,请为JPanels使用setPreferedSize而不是setSize

leftPanels.setPreferredSize(new Dimension(300,600));

我不知道什么是cashRegister,但看起来你没有将rightPanel添加到JFrame,所以一定要添加它。

答案 1 :(得分:0)

尝试将框架的布局设置为null。然后使用setBounds定位面板。

答案 2 :(得分:-1)

如果您尝试将面板相对设置为另一个,请将框架布局设置为null

this.getContentPane().setLayout(null);

然后你就可以绝对放置它们了。 有关详细信息:Doing Without a Layout Manager (Absolute Positioning)