2016-10-13 10 views
0

button 2によってdo_somethingが認識されるようにするにはどうすればよいですか?私はそれをクリックした後にbutton2のテキストを変更したいが、エラー:button2 cannot be resolvedを受け取った。関数によるJava Swingオブジェクトの認識

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

これはスコープの問題です。この問題を参照して、問題が解決した場合はお知らせください:http://stackoverflow.com/questions/4560850/java-variable-scope – ControlAltDel

答えて

0

あなたは(あなたがbutton2を押すたびに、いくつかの方法をグローバルとcounter varaiableをインクリメント)クラスの外buttonbutton2を宣言する必要があります:

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); 
    } 
} 
関連する問題