创建类的独立对象

  • 本文关键字:对象 独立 创建 java
  • 更新时间 :
  • 英文 :


我想创建一个类的多个对象,这些对象彼此独立。

我在 for 循环中多次调用类构造函数,但如何识别此对象?

我尝试使用一个静态变量来获取 for 循环索引的值,但该变量假定 for 循环的最后一个索引的值。

这是代码:

迈恩吉.java

public class Maingui extends JFrame {
public static JFrame frame;
public static JButton runButton;
public Maingui() throws IOException {
frame = new JFrame("maingui");
setSize(1024,700);
setTitle("maingui");
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setLayout(new BorderLayout());
runButton = new JButton("Run");
runButton.addActionListener(new RunBtnListener());
add(runButton);
}
}

RunBtnListener.java

public class RunBtnListener implements ActionListener {
ArrayList<SecondGui> menus = new ArrayList<SecondGui>();
public void actionPerformed(ActionEvent e) {
for(int i = 0; i < 2; i++) {
menus.add(new SecondGui(i));
}
}
}

第二桂.java

public class SecondGui extends JFrame {
public static int c;
JFrame frame;
JButton button;
public SecondGui(int i) {
this.c = i;
frame = new JFrame("Test");
setSize(1024,700);
setTitle("Menu");
setLocationRelativeTo(null);
setVisible(true);
this.setLocation(50*i, 50*i);
// Set layout manager
setLayout(new BorderLayout());
button = new JButton("B");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("C: " + c);
}
});
add(button);
}
}

当我单击SecondGuiGUI 中button按钮时,输出总是1。 但是我希望输出将根据我在哪个 GUI 中选择按钮来01

我想创建一个独立的类的多个对象 一个接一个。

您当前的代码在此循环中创建 2 个独立的对象

for(int i = 0; i < 2; i++) {
menus.add(new SecondGui(i));
}

但是,当您将其设置为静态时,它不会限制到您创建的任何实例。

您需要的是一个实例变量来保留SecondGui实例的 ID。可以创建新的构造函数并传递循环的索引。

public class SecondGui extends JFrame {
private int c = 0;
private JFrame frame;
private JButton button;
public SecondGui(int i) {
this.c = i;
initialize();
}
void initialize() {
frame = new JFrame("Test");
setSize(1024,700);
setTitle("Menu");
setLocationRelativeTo(null);
setVisible(true);
this.setLocation(50*i, 50*i);
// Set layout manager
setLayout(new BorderLayout());
button = new JButton("B");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("C: " + c);
}
});
add(button);
}
}

最新更新