我想使用ArrayList创建动态按钮列表。如果我复制在构造函数中编写AddButton
的方法,它可以工作。但是,如果我在ActionListener中运行此方法,它将无法正常工作。我该如何解决这个问题?
package HelloJFrame;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class Main extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private JTextField text1;
public static void main(String[] args) {
// TODO Auto-generated method stub
new Main().setVisible(true);
}
public Main() {
super("Hello JFrame");// Set Title from JFrame constructor
setSize(600, 600);
setResizable(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new FlowLayout());
text1 = new JTextField(20);
// text.setSize(200, 20);
add(text1);
JButton submit = new JButton("Add Button");
submit.addActionListener(this);
submit.setActionCommand("ekle");
add(submit);
}
@Override
public void actionPerformed(ActionEvent e) {
AddButton(2);
}
public void AddButton(int number) {
ArrayList<JButton> buttons = new ArrayList<JButton>();
for (int i = 0; i < number; i++) {
buttons.add(new JButton("Button #" + i));
}
/*
* JButton button = new JButton("Click!");
* button.addActionListener(this); add(button);
*/
for (int i = 0; i < buttons.size(); i++) {
this.add(buttons.get(i));
}
}
}
答案 0 :(得分:2)
将所有按钮添加到框架后,您需要添加
revalidate();
repaint();
确保调用布局管理器。
此外,方法名称不应以大写字母开头。 “AddButton”应为“addButton”。