我正在开发一个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}}个对象。
答案 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
}
}