0

我使用 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
4

3 回答 3

3

Graphics是一个抽象类,定义了整个 API 的需求。

Swing 中的绘画是在绘画链的上下文中完成的。这通常在组件的paintComponent方法中执行,该组件从JComponent

看看Perfoming Custom Painting了解更多详情

您也可以使用 aBufferdImage来生成Graphics上下文,但您仍然需要在某个地方绘制图像,因此它归结为您想要实现的目标。

于 2013-10-10T09:18:37.827 回答
3

解决方法是覆盖paintComponent方法,但是JFrame不是JComponent,所以用JPanel代替JFrame,然后将JPanel添加到JFrame中。

paintComponent(Graphics g) {
    super.paintComponent(g)

    //here goes your code
    Graphics2D g2 = (Graphics2D) g;
    ...
}
于 2013-10-10T09:15:53.800 回答
0

图形是一个抽象类。您无法实例化以下方式。

 Graphics g=new Graphics(); 

要访问Graphics2D,首先您需要覆盖paint(Graphics)方法。

@Override
public void paint(Graphics g) {
    Graphics2D g2 = (Graphics2D) g;
}
于 2013-10-10T09:17:38.650 回答