我使用Eclipse,我想通过以下代码在JFrame中制作一条图形线:
public void Makeline () {
Graphics g=new Graphics(); // has error
Graphics2D g2 = (Graphics2D) g;
g2.draw(new Line2D.Double(0, 0, 20, 20));
}
但给出以下错误:
Cannot instantiate the type Graphics
>Graphics
是一个抽象类,定义了整个API的要求。
Swing 中的绘画是在油漆链的背景下完成的。这通常在从JComponent
扩展的组件的paintComponent
方法中执行
查看 Perfoming 自定义绘画 了解更多详情
您还可以使用BufferdImage
来生成Graphics
上下文,但您仍然需要某个地方来绘制图像,因此它取决于您要实现的目标。
解决方案是覆盖paintComponent方法,但JFrame不是JComponent,所以使用JPanel而不是JFrame,然后将JPanel添加到JFrame。
paintComponent(Graphics g) {
super.paintComponent(g)
//here goes your code
Graphics2D g2 = (Graphics2D) g;
...
}
图形是一个抽象类。您无法按照方式实例化。
Graphics g=new Graphics();
要访问Graphics2D
,首先需要覆盖paint(Graphics)
方法。
@Override
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
}