Graphics2D fillPolygon

时间:2014-05-01 21:51:07

标签: java swing graphics jframe polygon

我正在尝试在未修饰的JFrame中创建一个关闭按钮。我做了Polygon

Polygon closePol = new Polygon(
            new int[] {getWidth() - 25, getWidth(), getWidth(), getWidth() - 25}, 
            new int[] {0, 0, 25, 25}, 4);

当我这样做时,g.fillPolygon(closePol);没有任何反应,但是当我这样做时

g.fillPolygon(new int[] {getWidth() - 25, getWidth(), getWidth(), getWidth() - 25}, 
              new int[] {0, 0, 25, 25}, 4);` , 

我看到一个多边形。为什么第一个不工作?

1 个答案:

答案 0 :(得分:3)

问题可能是getWidth()中的closePol被调用到paintComponent方法的范围之外,因此当前宽度不是尚未帐户(或可能仍为零),这可能是由于一些原因而发生的。

作为一般规则,在绘画时,您需要在getWidth()/getHeight()方法中调用paint[Component]()。例如,在展开框架时,如果未使用该方法调用getWidth(),则不会考虑新宽度,并且不会动态调整图形大小(如果这是您想要的。

在进行自定义绘画时,您还需要考虑覆盖getPreferredSize(),以便为面板提供一些尺寸提示。