从另一个类(Java)访问变量

从另一个类(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(){

我有一段时间没有编程了,只是开始了一个新项目来更新我的java技能/变得更好,所以这可能是一个愚蠢的问题

首先,我将提供我的代码。这只是一个示例程序,所以没有实际的面板可供点击,但这对我的问题并不重要

主要内容:

类别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");
    }

}
鼠标速记类:

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());
    }
}