JFrame 不显示 Jpanel 的权利

JFrame doesn't show the Jpanel's right

我正在使用大小为 800x600 的 JFrame。 我想做的是:

黑色面板内部还有 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 的面板

如果您尝试相对设置面板,请将框架布局设置为空

this.getContentPane().setLayout(null);

那你就绝对可以安放了。 更多信息:Doing Without a Layout Manager (Absolute Positioning)

首先,像这样使用 FlowLayout

setLayout(new FlowLayout(FlowLayout.LEFT));

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

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

我不知道 cashRegister 是什么,但看起来您没有将 rightPanel 添加到 JFrame,因此请务必添加它。

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