我使用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
答案 0 :(得分:3)
解决方案是覆盖paintComponent方法,但JFrame不是JComponent,因此使用JPanel而不是JFrame,然后将JPanel添加到JFrame。
paintComponent(Graphics g) {
super.paintComponent(g)
//here goes your code
Graphics2D g2 = (Graphics2D) g;
...
}
答案 1 :(得分:3)
Graphics
是一个抽象类,定义了整个API的要求。
Swing中的绘画是在绘画链的上下文中完成的。这通常在paintComponent
JComponent
组件方法中执行
请查看Perfoming Custom Painting了解详情
您还可以使用BufferdImage
生成Graphics
上下文,但您仍然需要在某处绘制图像,因此它会降低您想要实现的效果。
答案 2 :(得分:0)
Graphics是一个抽象类。你无法实例化以下方式。
Graphics g=new Graphics();
要访问Graphics2D
,首先需要覆盖paint(Graphics)
方法。
@Override
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
}