getHeight()如何在java中工作,特别是在paintComponent中

时间:2015-11-10 03:50:01

标签: java swing paintcomponent jcomponent

当我谷歌这个方法。它显示它返回当前组件的高度。我感到困惑,因为当我在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;
    }
}

1 个答案:

答案 0 :(得分:1)

  

我想知道paintComponent有没有默认的高度或宽度?

是的,0x0

getHeight将返回setBoundssetHeightsetSize(或通常0设置的组件高度,如果它是&#39}。没有设定)。

这些通常由添加了组件的容器的基础布局管理器调用。布局管理器可以使用getPreferred/Minimum/MaximumSize中的值来确定组件的布局方式,并根据它的实现应用它认为的值(大小和位置)

有关详细信息,请参阅Laying Out Components Within a Container