我扩展了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
调用内。