0

好的,所以这个问题可能太基本了,但我一直在谷歌搜索,但无法找到解决方案(甚至是解决方法)。如果你们中的一些人不喜欢这个,我提前道歉。

我正在创建一个带有几个按钮的 GUI 应用程序,因此我们当然需要一个鼠标事件(当单击其中一个按钮时)。例如:

public class myProject extends JFrame implements MouseListener {
    public int x = 4;
    public static void main(String[] args) {
        Jframe app = new JFrame();
        app.setTitle // and all that jazz...        
        JLabel label = new JLabel();
        label.setText("Old text");
        app.add(label);

        // Then later on...
        public void mouseClicked(MouseEvent e) {
            app.setTitle("New Title");
            label.setText("New text");
            System.out.println(x);
            // "app" and "label" throw errors, cannot find symbol
            // But x is fine...?
        }
    }
}

我尝试将应用程序元素设为公共/私有实例变量,但这似乎并没有改变任何东西。我什至尝试创建一种中间类来提供帮助,它将对交互器的引用复制为实例变量,并让鼠标事件调用使用这些引用的方法(第二次尝试非常接近上面的代码;但是通过尝试从主方法中引用设置公共变量给了我更多错误(关于我们如何不能从静态方法调用非静态对象)。

所以,最重要的是,到目前为止,与这个可怕的错误作斗争一直是一场“野鹅追逐”,所以我很感激你可能知道的任何提示/技巧/解决方法。谢谢。:)

4

2 回答 2

6

尝试将您的代码更改为这样的

Jframe app;
JLabel label;
    public static void main(String[] args) {
           new myProject();
        }

    public myProject()
    {
          app = new JFrame();
          app.setTitle // and all that jazz...        
          label = new JLabel();
          label.setText("Old text");
          app.add(label);
    }
      public void mouseClicked(MouseEvent e) {
          app.setTitle("New Title");
          label.setText("New text");
          System.out.println(x);
      }
于 2013-07-07T09:02:55.267 回答
0

愿你显示类的完整代码。现在它看起来像方法中的方法。如果是内部类,如果不是final,则无法获取app、label和x值。

于 2013-07-07T09:03:37.020 回答