我使用 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 中的绘画是在绘画链的上下文中完成的。这通常在组件的paintComponent
方法中执行,该组件从JComponent
看看Perfoming Custom Painting了解更多详情
您也可以使用 aBufferdImage
来生成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;
}