如何在Java中将参数传递给鼠标事件(如果可能)?

use*_*876 0 java swing jlabel mouseevent mouse-listeners

好的,所以这个问题可能太基础了,但我一直在谷歌上搜索并且无法挖掘解决方案(甚至是解决方法).如果你们有些人不喜欢这个,我会提前道歉.

我正在创建一个带有几个按钮的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...?
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

因此,到目前为止,与这个野兽虫争斗的底线是"野鹅追逐",所以我很感激您可能知道的任何提示/技巧/解决方法.谢谢.:)

Mic*_*tha 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);
      }
Run Code Online (Sandbox Code Playgroud)