Java:创建全局图形对象

标签 java swing graphics2d

我扩展了 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/

相关文章:

java - 将 Android 事件绑定(bind)到 Qt 应用程序

java - 如何从 Gradle 中的依赖项中排除内部包(不是 Maven 依赖项)

java - System.getenv 找不到环境变量

java - 在组件之间传递值

java - JPanel 中的计时器未启动

java - 帮助向 JFrame 添加桨

java - 在awt中添加图像

java - java对文档进行物理排序的算法

JScrollPane 中的 Java JPanel?

java - 删除在另一个 BufferedImage 上绘制的 BufferedImage