I\'ve extended the JPanel class to draw a graph. The problem that I\'ve got is that I need a global graphics object in order to call it in multiple methods... As an example, her
My suggestion would be this:
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);
}
}
i.e. keep all the uses of your graphics context inside the paintComponent
call.
How would I pass in the graphics object externally?
Don't. The graphics context is only valid during the invocation of paintComponent()
. Instead, use the MVC pattern, discussed here, to update a model that notifies any listening view to render itself. JFreeChart is a complete example.