在Java中,默认的JPanel高度和宽度是多少?
我已经创建了如下的类。当我创建这个类的一个名为drawpanel的对象并使用frame.getContentPane().add(BorderLayout.CENTER,drawpanel)添加到框架中时,我得到了一个黑色背景的矩形。这是否意味着面板的this.getWidth和this.getHeight默认具有与框架相同的高度和宽度(这就是为什么它用黑色填充整个框架的原因) 我想重新定义我的问题的另一种方式是——如果我通过扩展JPanel创建一个自定义小部件,当这个自定义小部件被实例化时,它的默认高度和宽度是多少在Java中,默认的JPanel高度和宽度是多少?,java,swing,awt,Java,Swing,Awt,我已经创建了如下的类。当我创建这个类的一个名为drawpanel的对象并使用frame.getContentPane().add(BorderLayout.CENTER,drawpanel)添加到框架中时,我得到了一个黑色背景的矩形。这是否意味着面板的this.getWidth和this.getHeight默认具有与框架相同的高度和宽度(这就是为什么它用黑色填充整个框架的原因) 我想重新定义我的问题的另一种方式是——如果我通过扩展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());
}
}
我认为JPanel本身的首选大小为0,0。但如果向其中添加具有更高首选大小的组件,其首选大小将不会为0 这是否意味着面板的this.getWidth和this.getHeight默认具有与框架相同的高度和宽度(这就是为什么它用黑色填充整个框架的原因) 不,这意味着框架具有布局/约束(
BorderLayout
/CENTER
),该布局/约束将拉伸零部件,使其达到填充它的任何尺寸
如果我通过扩展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());
}
}
0x0(未布置任何组件)
完成自定义绘制的面板应返回内容的首选大小。添加到框架后,调用
pack()
方法,它将是满足组件首选尺寸所需的准确尺寸。JPanel
具有默认尺寸0宽度和0高度。
您可以设置大小:
- 手动:
,panel.setSize()
panel.setPreferredSize()
- 自动:
panel.pack()
JPanel
中没有pack()
方法。