我在BasicStroke Outline = new BasicStroke(10f, 50, 50);中创建笔触形状时遇到麻烦。我目前收到的错误是错误:


  找不到指向点的符号canvas.setStroke(Outline)。


我是构造函数的新手,所以任何帮助都将是很大的,而与此类似,我唯一要做的就是创建Scanner的实例。

import javax.swing.JFrame;
import java.awt.Graphics;
import java.awt.Color; //sets color
import java.awt.BasicStroke;
import java.awt.Graphics2D;
public class ColoredOlypmicRings extends JFrame
{
 //varriables go here


public void paint(Graphics canvas)
{
 super.paint (canvas);

canvas.setColor(Color.green);
canvas.drawOval(100,100,100,100); //color green
canvas.setColor(Color.red);
canvas.drawOval(200,200,100,100); //color red
final BasicStroke Outline = new BasicStroke(10f, 50, 50);
canvas.setStroke(Outline);

canvas.drawOval(300,300,200,200);
}

 public ColoredOlypmicRings()
 {
 setSize(600,400);
setDefaultCloseOperation(EXIT_ON_CLOSE);
 }

public static void main(String[] args)
{
 ColoredOlypmicRings guiWindow = new ColoredOlypmicRings();
guiWindow.setVisible(true);
 }
}

最佳答案

Graphics class无法处理笔划,并且没有将其设置为its API的方法会告诉您。

另一方面,Graphics2D class可以处理此类,应该使用它来处理。因此,将您的Graphics对象转换为Graphics2D对象。

例如。,

@Override
protected void paintComponent(Graphics g) {
    Graphics2D g2 = (Graphics2D) g;
    g2.setStroke(....); // do it here after casting
}


另外,请检查BasicStroke API,因为您没有正确使用构造函数,并传递了错误的参数。

其他事宜:


不要直接在JFrame或其他顶级窗口中绘制。
而是绘制在JFrame中显示的JPanel的paintComnponent方法。
三个int BasicStroke构造函数被滥用,因为2nd和3rd参数应该是代表Stroke对象的cap和join状态的常量。

10-06 05:33