gpt4 book ai didi

java - 如何在另一个类中访问一个类的变量而不将它们设为静态?

转载 作者:行者123 更新时间:2023-12-02 05:23:09 25 4
gpt4 key购买 nike

我正在开发一个 Java Swing 应用程序,它有一个 JFrame,其中包含 JButton 数组(另一个类)。我在 JFrame 中有变量,当调用 ActionListener 时,我想在 JButton 中访问这些变量。目前,我将这些变量声明为静态,以便我可以直接访问它们。

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 时,我想根据所有按钮中的值执行一些逻辑

注意:我无法在 JButton 类中创建 JFrame 对象。

最佳答案

像这样:

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
}
}

关于java - 如何在另一个类中访问一个类的变量而不将它们设为静态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26323931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com