【问题标题】:how getHeight() works in java especially in paintComponentgetHeight() 如何在 Java 中工作,尤其是在paintComponent 中
【发布时间】:2015-11-10 03:50:01
【问题描述】:

当我用谷歌搜索这个方法时。它表明它返回当前组件的高度。我很困惑,因为当我在 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;
    }
}

【问题讨论】:

    标签: java swing paintcomponent jcomponent


    【解决方案1】:

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

    是的,0x0

    getHeight 将返回由setBoundssetHeightsetSize 设置的组件高度(如果未设置,则通常为0)。

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

    详情请见Laying Out Components Within a Container

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-02
      • 2011-01-16
      • 1970-01-01
      • 2013-08-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多