Sak*_*ath -3 java class object
我没有编程一段时间,刚刚开始一个新项目来刷新我的java技能/变得更好,所以这可能是一个愚蠢的问题.
首先,我将提供我的代码.它只是一个示例程序,所以没有实际的面板可以点击,但它对我的问题无关紧要.
主要:
package sample;
public class main {
class1 c1 = new class1();
}
Run Code Online (Sandbox Code Playgroud)
1类:
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");
}
}
Run Code Online (Sandbox Code Playgroud)
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());
}
}
Run Code Online (Sandbox Code Playgroud)
当我在我的MouseListenerClass中的mousePressed方法内部或另一个类中的另一个方法中,我如何从我的class1访问变量(例如var1).
问候
只需将一个类的实例传递给另一个类,并为该字段设置一个getter:
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());
}
}
Run Code Online (Sandbox Code Playgroud)
注意:我更改了名称class1,UIClass因为前者不遵循以大写字母开头的类名称的标准Java约定,并且我""+从打印的行中删除了jp1.getName()它,因为它可能已经返回一个字符串,即使它不是t,有一个重载System.out.println需要Object并调用toString()它.