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

时间:2018-06-29 01:08:58

标签: java class object

我有一段时间没有编程,只是开始了一个新项目来刷新我的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)。

问候

1 个答案:

答案 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()在上面。