无法绘制JPanel

时间:2015-02-21 14:13:49

标签: java swing awt graphics2d

我正在尝试使用JPanel。调用函数drawField时,它什么都没有。可能是什么原因?

private void drawField() {
    try {
        Graphics2D field = (Graphics2D) jPanel2.getGraphics();
        field.drawLine(0, 0, 100 , 100);
    }catch(Exception exc) { exc.printStackTrace();}
}

从主类构造函数调用它。

1 个答案:

答案 0 :(得分:4)

覆盖面板上的paintComponent方法。

您无法在构造函数中的JPanel上绘图。这是不合适的时间,并且一旦绘制了面板,您绘制的任何内容都将被覆盖。一旦它变得可见就会发生这种情况,所以你永远不会看到你画的东西。

相反,覆盖paintComponent方法,如下所示:

@Override
public void paintComponent(Graphics g) {
    super.paintComponent(g);
    Graphics2D g2 = (Graphics2D) g;
    g2.drawLine(0, 0, 100, 100);
}

在事件调度线程上调用此方法,作为绘制面板本身的过程的一部分。每次需要再次绘制面板内容时,都会调用此方法,因此可以确保您的行始终显示。

如果背景为黑色,请记住将绘图颜色设置为不同的颜色,因为它将默认为该颜色。