我扩展了JPanel类以绘制图形。我遇到的问题是我需要一个全局图形对象才能以多种方法调用它。例如,这是我要尝试的操作:

public class Graph extends JPanel {
  private Graphics2D g2d;

  public void paintComponent(Graphics g){
    g2d = (Graphics2D)g;
  }

  public void drawGridLines(int hor, int vert){
    g2d.someLogicToDrawMyGridLines(someparams);
  }
}


这将返回空指针异常-所以我的问题是:如何创建全局图形对象?在这种情况下,最佳做法是什么?

最佳答案

我的建议是这样的:

public class Graph extends JPanel {
    public void paintComponent(Graphics g){
        super.paintComponent(g);
        g2d = (Graphics2D) g;
        drawGridLines(g2d, ......);
    }

    private void drawGridLines(Graphics2D g2d, int hor, int vert){
        g2d.someLogicToDrawMyGridLines(someparams);
    }
}


即将所有使用图形上下文的内容保留在paintComponent调用内。

10-08 00:44