0

私はしばらくの間、メインクラスの変数にアクセスしようとしています:

public class Results extends JFrame {
     public static void main(String[] args) 
     {
        System.out.println(doble);
     }}

このように、アクションリスナーの中にあります

public Results ()
{
 // Create a JPanel for the buttons DOUBLE AND NOT DOUBLE
    JPanel duplicate = new JPanel(
    new FlowLayout(FlowLayout.CENTER));
    JButton doblebutton = new JButton("DOUBLE");
    doblebutton.addActionListener(new ActionListener(){
    private int doble;
    public void actionPerformed(ActionEvent ae){
                doble++;
                System.out.println("Doubles: " + doble);
                }
  });
}

私はそれを行うために5つの方法を試しましたが、それは不可能のようです. 何かご意見は?

4

3 に答える 3

2

次のように、 dobleの宣言をコンストラクターの外に移動して、フィールドになるようにしてください。

public class Results extends JFrame {

    private int doble;

    public Results() {
        // Create a JPanel for the buttons DOUBLE AND NOT DOUBLE
        JPanel duplicate = new JPanel(new FlowLayout(FlowLayout.CENTER));
        JButton doblebutton = new JButton("DOUBLE");
        doblebutton.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent ae) {
                doble++;
                System.out.println("Doubles: " + doble);
            }
        });
    }

    public static void main(String[] args) {
        Results results = new Results();
        System.out.println(results.doble);
    }

}

いくつかのコメント:

  • dobleは非静的フィールドであるため、Resultsの具体的なインスタンスを使用してアクセスする必要がありますmain()メソッドに加えた変更を見てください。
  • このようにプライベートフィールドに直接アクセスしても、カプセル化が非常にクリーンであることを示すわけではなく、実際にはコンパイラの警告が生成されます。
  • 予約語doubleのコンパイラエラーを回避するために非単語dobleを使用することは、 countのようなより意味のあるものほど良くはないでしょう。

お役に立てれば。

于 2013-01-17T16:06:39.997 に答える
1

現在、コンストラクターで宣言されてdobleいるローカル変数であるため、そのスコープは のみです。他の場所にアクセスするにはconfined to constructor、で宣言してください。insatnce level

public class Results extends JFrame {
    private int doble;
      //cons code
   public static void main(String[] args) 
     {
        System.out.println(new Results().doble);
     }}
于 2013-01-17T16:01:31.713 に答える
0

main()静的で、dobleインスタンス変数です。インスタンス化するか、変数を静的にする必要があります。

于 2013-01-17T16:01:37.380 に答える