我有一段时间没有编程,只是开始了一个新项目来刷新我的Java技能/变得更好,所以这可能是一个愚蠢的问题。
首先,我将提供我的代码。它只是一个示例程序,因此没有实际的面板可单击,但这与我的问题无关。
主要:
package sample;
public class main {
class1 c1 = new class1();
}
class1:
package sample;
import javax.swing.JPanel;
public class class1 {
int var1 = 0;
JPanel jp = new JPanel();
public class1(){
jp.addMouseListener(new MouseListenerClass());
jp.setName("Test");
}
}
MouseListenerClass:
package sample;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JPanel;
public class MouseListenerClass extends MouseAdapter
{
public void mousePressed(MouseEvent me)
{
JPanel jp1 =(JPanel) me.getSource();
System.out.println(""+jp1.getName());
}
}
当我在MouseListenerClass中的mousePressed方法/另一个类中的另一个方法中时,如何从class1中访问变量(例如var1)。
问候
答案 0 :(得分:6)
只需将一个类的实例传递给另一类,并为该字段获取一个吸气剂:
public class UIClass {
private int number = 42;
private JPanel jp = new JPanel();
public UIClass() {
jp.addMouseListener(new MouseListenerClass(this));
jp.setName("test");
}
public int getNumber() {
return number;
}
}
public class MouseListenerClass extends MouseAdapter {
private UIClass uiclass;
public MouseListenerClass(UIClass uiclass) {
this.uiclass = uiclass;
}
public void mousePressed(MouseEvent me) {
JPanel jp1 = (JPanel) me.getSource();
System.out.println(jp1.getName());
System.out.println(uiclass.getNumber());
}
}
注意:我将名称从class1
更改为UIClass
,因为前者不遵循以大写字母开头的类名的标准Java约定,因此我将""+
从打印jp1.getName()
的行,因为它可能已经返回了一个字符串,即使不是,也存在System.out.println
的重载,它需要一个Object
并调用toString()
在上面。