Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JFrame不';t显示Jpanel';是的_Java_Swing_Jframe_Layout Manager - Fatal编程技术网

Java JFrame不';t显示Jpanel';是的

Java JFrame不';t显示Jpanel';是的,java,swing,jframe,layout-manager,Java,Swing,Jframe,Layout Manager,我使用的是尺寸为800x600的JFrame。 我想做的是: 黑色面板内部还有两块其他面板,每个面板的尺寸为300x300 结果是黑色面板位于左侧(如图所示),红色面板位于中间,框架和面板之间顶部有一个间隙。另外,如果我移除黑色面板,右面板将填充整个框架 代码如下: //create the left part of the screen JPanel leftPanels = new JPanel(); leftPanels.setLayout(new GridLay

我使用的是尺寸为800x600的JFrame。 我想做的是:

黑色面板内部还有两块其他面板,每个面板的尺寸为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,但如果您试图将面板相对地设置为一个,则会得到两个面板,每个面板为400X600

this.getContentPane().setLayout(null);
然后你就可以完全地放置它们了。
有关详细信息:

如果试图将面板相对设置为一个面板,请将框架布局设置为空

this.getContentPane().setLayout(null);
然后你就可以完全地放置它们了。
有关更多信息:

首先,使用如下FlowLayout

setLayout(new FlowLayout(FlowLayout.LEFT));
其次,请为JPanel使用setPreferedSize而不是setSize

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

我不知道什么是收银机,但看起来您没有将rightPanel添加到JFrame,所以请确保您添加了它。

首先,像这样使用FlowLayout

setLayout(new FlowLayout(FlowLayout.LEFT));
其次,请为JPanel使用setPreferedSize而不是setSize

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

我不知道什么是收银机,但看起来您没有将rightPanel添加到JFrame,因此请确保添加它。

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

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

您从未添加过右面板对不起,我的问题,我没有正确复制它为什么不使用
FlowLayout
?您从未添加过右面板对不起,我的问题,我没有正确复制它为什么不使用
FlowLayout
?它不起作用,如果您移除黑色面板,右面板将填充框架,如果我在黑框中添加了一些内容,它会将其放置在中心1)Java GUI必须在不同的操作系统上工作,屏幕大小,屏幕分辨率等。在不同地区使用不同的PLAF。因此,它们不利于像素完美布局。而是使用布局管理器,或与布局填充和边框一起使用。2) 在任何情况下,这都应该是一个注释。1)Java GUI必须在不同的操作系统、屏幕大小、屏幕分辨率等上工作,在不同的地区使用不同的PLAF。因此,它们不利于像素完美布局。而是使用布局管理器,或与布局填充和边框一起使用。2) 无论如何,这应该是一个评论。请看(是的)长话短说。在这种情况下,最好重写
getPreferredSize
方法,而不是调用
setPreferredSize
。。但是+1是唯一正确的答案。请看(是的)。长话短说。在这种情况下,最好重写
getPreferredSize
方法,而不是调用
setPreferredSize
。。但是+1是唯一朝着正确方向前进的答案。