好的,所以这个问题可能太基础了,但我一直在谷歌上搜索并且无法挖掘解决方案(甚至是解决方法)。如果你们中的一些人不喜欢这个,我会提前道歉。
我正在创建一个带有几个按钮的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变量给了我更多的错误(关于我们怎么不能从静态方法中调用非静态对象)。
所以,到目前为止,与这个野兽虫争斗的底线是“野鹅追逐”,所以我很欣赏你可能知道的任何提示/技巧/解决方法。谢谢。 :)
答案 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值。