从另一个类(Java)访问变量
我有一段时间没有编程了,只是开始了一个新项目来更新我的java技能/变得更好,所以这可能是一个愚蠢的问题 首先,我将提供我的代码。这只是一个示例程序,所以没有实际的面板可供点击,但这对我的问题并不重要 主要内容: 类别1:从另一个类(Java)访问变量,java,class,object,Java,Class,Object,我有一段时间没有编程了,只是开始了一个新项目来更新我的java技能/变得更好,所以这可能是一个愚蠢的问题 首先,我将提供我的代码。这只是一个示例程序,所以没有实际的面板可供点击,但这对我的问题并不重要 主要内容: 类别1: package sample; import javax.swing.JPanel; public class class1 { int var1 = 0; JPanel jp = new JPanel(); public 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");
}
}
鼠标速记类:
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)
问候语只需将一个类的实例传递给另一个类,并为字段指定一个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());
}
}
注意:我将名称从
class1
更改为UIClass
,因为前者不遵循以大写字母开头的类名的标准Java约定,并且我从打印jp1.getName()
的行中删除了”+
,因为它可能已经返回了字符串,即使它没有返回,System.out.println
过载,它获取一个对象
并调用toString()
。嘿,谢谢你的回答。将一个实例传递给我在良好实践中使用其方法/变量的每个类,还是有更好的方法来实现它?@Sakkath是的,这是一个良好实践。当然,您可以稍后将其传递给setter
,而不是传递给构造函数,这基本上就是addActionListener
的含义。@Sakkath:最好将模型(程序的底层逻辑、状态和行为)与视图(GUI)分开,一种方法是通过M-V-C或模型-视图-控制器设计模式。这是有益的,有几个原因,一个是为了减少代码的连接性(或“耦合”),从而减少bug,另一个是易于升级,另一个是易于更改GUI平台,例如从Swing更改为JavaFX。
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());
}
}