Usar variavel de outro metodo

olá pessoal. como faço pra usar essa variavel g2 do metodo paint no comando do meu botao?

    public class Reta extends JFrame{  
       JButton b1 = new JButton("  Ok  ");  
      
       public void paint(Graphics g) {   
          Graphics2D g2 = (Graphics2D) g;  
          g2.setStroke(new BasicStroke(15));  
          g2.setColor(Color.blue);          
          //loop para criação dos pontos  
          for (int y = 200; y < 650; y=y+100) {  
             for (int x = 150; x < 650; x=x+100) {  
                g2.drawLine(x, y, x, y);     
             }         
          }       
       }  
      
       public Reta() {  
          super("ponto e reta");  
          setSize(650, 700);  
          setLayout(new GridBagLayout());  
          ((JComponent)getContentPane()).setBorder(new EmptyBorder(1, 1, 1, 1));  
          GridBagConstraints gbc = new GridBagConstraints();     
          gbc.anchor = GridBagConstraints.CENTER;    
          gbc.gridy = 0;   
          add(b1, gbc);  
            
          //comando do botao  
          b1.addActionListener(new ActionListener() {  
             public void actionPerformed(ActionEvent e) {  
                int xt1,yt1,xt2,yt2;  
                  
                       /*usar variavel g2 aqui */  
                  
             }  
          });      
         
       }  
            
       public static void main(String[] args) {  
          Reta janela = new Reta();   
          janela.setVisible(true);   
       }  
    }  

desde já agradeço.

Bem não sei muito bem o que vc está fazer, mas variáveis de métodos só são visíveis dentro desse método.
O que agente pode tentar fazer é que uma variavel externa receba o valor que a variavel desse metodo tem, para que você então possa usar a variavel exter em outro lugar.

Fica assim

[code]JButton b1 = new JButton(" Ok ");

Graphics2D g2Externo;

   public void paint(Graphics g) {     
      Graphics2D g2 = (Graphics2D) g;    
      g2.setStroke(new BasicStroke(15));    
      g2.setColor(Color.blue);            
      //loop para criação dos pontos    
      for (int y = 200; y < 650; y=y+100) {    
         for (int x = 150; x < 650; x=x+100) {    
            g2.drawLine(x, y, x, y);       
         }           
      }
      
      this.g2Externo = g2;
   }

[/code]

Meu amigo não tenho a absoluta certeza que vá funcionar,o seu caso, mas não custa nada tentar.
Ao menos quando preciso de lago semelhante uso assim e funciona.
Sorte ai. :slight_smile:

olá Ziru, a dica funcionou mais ou menos.
o que eu estou querendo fazer é criar uma grande de pontos(5 linhas x 5 colunas com distancia entre pontos de 100) e ligar estes pontos com retas (g3.drawLine(150,200,150,300):wink: atraves do botao.
aparentemente está tudo certo, compila normal sem erro, mas quando clico no botao nao aparece linha nenhuma. segue abaixo o codigo com a correção. Se vc ou alguem tiver alguma ideia eu agradeço.

[code]
public class Reta extends JFrame{
JButton b1 = new JButton(" Ok ");
Graphics2D g3;

public void paint(Graphics g) {    	
	Graphics2D g2 = (Graphics2D) g;
	Graphics2D g4 = (Graphics2D) g;
	g2.setStroke(new BasicStroke(15));
	g2.setColor(Color.blue);   		
	//loop para criação dos pontos
	for (int y = 200; y < 650; y=y+100) {
		for (int x = 150; x < 650; x=x+100) {
			g2.drawLine(x, y, x, y); 
		}       
	}  
	g4.setStroke(new BasicStroke(5));
	g4.setColor(Color.red);  
	this.g3 = g4;				
}   
    
   public Reta() {    
      super("ponto e reta");    
      setSize(650, 700);    
      setLayout(new GridBagLayout());    
      ((JComponent)getContentPane()).setBorder(new EmptyBorder(1, 1, 1, 1));    
      GridBagConstraints gbc = new GridBagConstraints();       
      gbc.anchor = GridBagConstraints.CENTER;      
      gbc.gridy = 0;     
      add(b1, gbc);    
          
      //comando do botao    
      b1.addActionListener(new ActionListener() {    
         public void actionPerformed(ActionEvent e) {    
            int xt1,yt1,xt2,yt2;    
                
            g3.drawLine(150,200,150,300);	
        g3.drawLine(150,200,250,200);                      
         }    
      });               
   }                 
   public static void main(String[] args) {    
      Reta janela = new Reta();     
      janela.setVisible(true);     
   }    
} [/code]