我在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状态的常量。