我扩展了 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
调用中。
关于Java:创建全局图形对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26607614/