如何在JFrame中创建图形线?

时间:2013-10-10 09:11:34

标签: java swing graphics

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

3 个答案:

答案 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;
}