当我谷歌这个方法。它显示它返回当前组件的高度。我感到困惑,因为当我在public void paintComponent(Graphics g)中使用这个getHeight()时,它返回的值我不知道它来自何处。我想知道paintComponent有没有默认的高度或宽度?谢谢。你可以看到下面的代码。
public void paintComponent(Graphics g) {
super.paintComponent(g);
// Find the maximum value in the data
double max = data[0];
for (int i=1; i<data.length; i++)
max = Math.max(max, data[i]);
int barWidth = (int)((getWidth() - 10.0) / data.length - 10);
int maxBarHeight = getHeight() - 30;
g.drawLine(5, getHeight() - 10, getWidth() - 5, getHeight() - 10);
int x = 15;
for (int i = 0; i < data.length; i++) {
g.setColor(colors[i % colors.length]);
int newHeight = (int)(maxBarHeight * data[i] / max);
int y = getHeight() - 10 - newHeight;
g.fillRect(x, y, barWidth, newHeight);
g.setColor(Color.black);
g.drawString(dataName[i], x, y - 7);
x += barWidth + 10;
}
}
答案 0 :(得分:1)
我想知道paintComponent有没有默认的高度或宽度?
是的,0x0
。
getHeight
将返回setBounds
,setHeight
或setSize
(或通常0
设置的组件高度,如果它是&#39}。没有设定)。
这些通常由添加了组件的容器的基础布局管理器调用。布局管理器可以使用getPreferred/Minimum/MaximumSize
中的值来确定组件的布局方式,并根据它的实现应用它认为的值(大小和位置)
有关详细信息,请参阅Laying Out Components Within a Container