如何在不使其静态的情况下访问另一个类中的类的变量?

时间:2014-10-12 10:01:48

标签: java swing static actionlistener

我正在开发一个Java Swing应用程序,它有一个JFrame,其数组为JButton(另一个类)。我在JFrame中有JButton中的变量,当ActionListener被调用时,我想在static中访问这些变量。目前我将这些变量声明为public class MyFrame extends JFrame { //static variables public static MyButton buttons[] = new MyButton[N]; public static int counter = 0; public static int clickedX, clickedY; public static void main (String[] args) { new MyFrame(); } public MyFrame(){ // Doing Everything Here setSize(300, 380); setResizable(false); setDefaultCloseOperation(DISPOSE_ON_CLOSE); // Layout, JMenu etc. } //static functions to access static variables Here } ,以便我可以直接访问它们。

MyButton

以下是public class MyButton extends JButton implements ActionListener { private int xID,yID; public MyButton(int x, int y) { addActionListener(this); xID = x; yID = y; } @Override public void actionPerformed(ActionEvent e) { // Accessing MyFrame static variables and functions here } } 类:

ActionListener

但是如果没有声明变量和函数是静态的,还有其他方法吗?我希望在任何按钮

中调用JFrame时,根据所有按钮中的值执行一些逻辑

注意:我无法在JButton课程中创建{{1}}个对象。

1 个答案:

答案 0 :(得分:2)

像这样:

public class MyFrame extends JFrame implements ActionListener{
    //static variables
    private JButton buttons[] = new JButton[N];
    private int counter = 0;
    private int clickedX, clickedY;

    public static void main (String[] args) {
        new MyFrame();
    }

    public MyFrame(){
        for (int i = 0; i < buttons.length; i++)
        {
            JButton b = new JButton();
            b.addActionListener(this);
            buttons[i] = b;
        }
        // Doing Everything Here
        setSize(300, 380);
        setResizable(false);
        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        // Layout, JMenu etc.
    }

    public void actionPerformed (ActionEvent e) {
        // your code
    }
}