在Java中,默认的JPanel高度和宽度是多少?

问题描述 投票:0回答:4

我创建了如下课程。当我创建此类的名为drawpanel的对象并使用frame.getContentPane().add(BorderLayout.CENTER,drawpanel)添加到框架时,我得到了一个具有预期黑色背景的矩形。这是否意味着Panel的this.getWidth和this.getHeight默认与Frame的高度和宽度相同(这就是为什么它用黑色填充整个框架)?

我想重新构建我的问题的另一种方式是 - 如果我通过扩展 JPanel 创建一个自定义小部件,并且当实例化此自定义小部件时,其默认高度和宽度是多少?

import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;

public class MyDrawPanel extends JPanel {
public void paintComponent(Graphics g){
    g.fillRect(0, 0, this.getWidth(), this.getHeight());
    }
}
java swing awt
4个回答
1
投票

这是否意味着Panel的this.getWidth和this.getHeight默认与Frame的高度和宽度相同(这就是为什么它用黑色填充整个框架)?

不,这意味着框架有一个布局/约束(

BorderLayout
/
CENTER
),它将把组件拉伸到填充它的任何大小。

如果我通过扩展 JPanel 创建一个自定义小部件,当实例化这个自定义小部件时,它的默认高度和宽度是多少?

0x0(未布置任何组件)。


完成自定义绘画的面板应返回内容的首选尺寸。 添加到框架后,调用

pack()
方法,它将达到所需的确切大小,以符合组件的首选大小。


0
投票

我认为 JPanel 本身的首选大小为 0,0。但如果你向其中添加一些具有更高首选尺寸的组件,它的首选尺寸将不会是 0。


0
投票

JPanel
的默认尺寸为 0 宽度和 0 高度。

您可以设置尺寸:

  • 手动:
    panel.setSize()
    panel.setPreferredSize()
  • 自动:
    panel.pack()

0
投票

当您处理遵循首选大小属性的 GridBagLayout 时,这一点非常重要:

new JPanel().getPreferredSize() == java.awt.Dimension[width=10,height=10]
© www.soinside.com 2019 - 2024. All rights reserved.