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

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).

问候

Dav*_*rad 6

只需将一个类的实例传递给另一个类,并为该字段设置一个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()它.