我不知道如何获得“ 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
    }
}


我的输出:

java - 使用Java绘图:将边界/轮廓应用于形状-LMLPHP

正确的输出:

java - 使用Java绘图:将边界/轮廓应用于形状-LMLPHP

最佳答案

当您调用fillOval时,笔触并不重要,但在调用drawOval时,笔触也无关紧要。所以我建议:


在执行操作时呼叫fillOval
在每个fillOval之后,将Color更改为Color.BLACK(或所需的任何轮廓颜色),然后调用drawOval
如果最小化GUI,然后还原它,请查看图形发生了什么。
因此,为避免NullPointerException错误,我们不建议您使用通过Swing组件上的getGraphics()调用获得的Graphics对象。这样的Graphics对象是短暂的。取而代之的是,教程和大多数其他类似的问题将告诉您:在扩展JPanel或JComponent的类中的适当paintComponent覆盖内。

07-26 05:26