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

时间:2013-07-07 08:52:57

标签: java swing mouseevent jlabel 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...?
        }
    }
}

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

所以,到目前为止,与这个野兽虫争斗的底线是“野鹅追逐”,所以我很欣赏你可能知道的任何提示/技巧/解决方法。谢谢。 :)

2 个答案:

答案 0 :(得分: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);
      }

答案 1 :(得分:0)

您可以显示该课程的完整代码。现在它看起来像方法中的方法。如果它是一个内部类,如果它们不是最终的,你就无法获得app,label和x值。