2016-10-13 2 views
0

Was kann ich tun, um button 2 von do_something Funktion zu erkennen? Ich möchte Text nach dem Klicken ändern, aber ich habe einen Fehler erhalten: button2 cannot be resolved.Java Swing Objekterkennung durch Funktion

class myClass { 
    public static int counter = 0; 
    public static void do_something() { 
    button2.setText(Integer.toString(counter)); 
    } 

public static void main(String[] args) { 
    JFrame frame = new JFrame(); 
    frame.setLayout(new GridLayout(3, 2)); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    JButton button = new JButton("button 1"); 
    frame.add(button); 
    JButton button2 = new JButton("button 2"); 
    button2.addActionListener(e -> do_something()); 
    frame.add(button2); 
    frame.pack(); 
    frame.setVisible(true);  
    } 
} 
+1

Dies ist ein Umfang Thema. Bitte sehen Sie diese Frage und lassen Sie uns wissen, wenn es Ihr Problem löst: http://stackoverflow.com/questions/4560850/java-variable-scope – ControlAltDel

Antwort

0

Sie benötigen button und button2 außerhalb der Klasse zu erklären (einige, wie global und erhöhe den counter varaiable, wenn Sie die button2 drücken):

package javaapplication1; 

import java.awt.GridLayout; 
import javax.swing.JButton; 
import javax.swing.JFrame; 

class myClass extends JFrame{ 

    static JButton button = new JButton("button 1"); 
    static JButton button2 = new JButton("button 2"); 
    public static int counter = 0; 

    public static void do_something() { 
     counter++; 
     button2.setText(Integer.toString(counter)); 
    } 

    public static void main(String[] args) { 
     JFrame frame = new JFrame(); 
     frame.setLayout(new GridLayout(3, 2)); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     frame.add(button); 

     button2.addActionListener(e -> do_something()); 
     frame.add(button2); 
     frame.pack(); 
     frame.setVisible(true); 
    } 
}