Java JFrame无法创建按钮(arraylist)

时间:2014-03-01 16:18:59

标签: java swing user-interface jframe

我想使用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));
        }
    }

}

1 个答案:

答案 0 :(得分:2)

将所有按钮添加到框架后,您需要添加

revalidate();
repaint();

确保调用布局管理器。

此外,方法名称不应以大写字母开头。 “AddButton”应为“addButton”。