0

我不知道如何获得“g.setStroke(new BasicStroke(5));” 设置为我创建的所有形状(在本例中为椭圆形)。

我的代码:

import java.awt.*;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.BasicStroke;

public class Rings 
{
    public static void main(String[] args) 
    {
        DrawingPanel panel = new DrawingPanel(300, 300);

        Graphics2D g = panel.getGraphics();
        g.setStroke(new BasicStroke(5)); // Sets Outer Line Width of Shapes
        g.setColor(new Color(255, 0, 0));
        g.fillOval(50, 50, 200, 200); // Large Oval
        g.setColor(new Color(200, 0, 0));
        g.fillOval(100, 100, 100, 100); // Medium Oval
        g.setColor(new Color(150, 0, 0));
        g.fillOval(125, 125, 50, 50); // Small Oval
        g.setColor(new Color(100, 0, 0));
        g.fillOval(137, 137, 25, 25); // Tiny Oval
    }
}

我的输出:

我的输出

正确的输出:

正确的输出

4

1 回答 1

3

当您调用 fillOval 时,中风并不重要,但当您调用drawOval. 所以我推荐:

  • fillOval边做边打电话
  • 在每个之后fillOval,然后将 Color 更改为 Color.BLACK (或您想要的任何轮廓颜色),然后调用drawOval.
  • 如果您最小化 GUI 然后恢复它,看看您的绘图会发生什么。
  • 正是出于这个原因,并且为了避免 NullPointerException 错误,我们不建议您使用通过getGraphics()调用 Swing 组件获得的 Graphics 对象。这样的 Graphics 对象是短暂的。而是按照教程和大多数其他类似问题告诉您的那样做:在paintComponent扩展 JPanel 或 JComponent 的类中的适当覆盖内。
于 2016-09-28T14:31:33.477 回答