Usar variavel de outro metodo

2 respostas
V

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.

2 Respostas

Ziru

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

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;
	   }

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. :)

V

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);) 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.

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);     
       }    
    }
Criado 12 de outubro de 2012
Ultima resposta 12 de out. de 2012
Respostas 2
Participantes 2