Java JFrame无法创建按钮(数组列表)

标签 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));
        }
    }

}

最佳答案

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

revalidate();
repaint();

确保调用布局管理器。

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

关于Java JFrame无法创建按钮(数组列表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22116859/

相关文章:

java - 提取哪个 channel - ImageJ

swing - JTable 中的 JSlider

java - 在过滤的 JTable 上选择特定的表模型元素

c++ - 用GTK制作逻辑门模拟器,放置区如何制作?

android - 是否可以将 stickylistviewheader 与 crisbanes pulltorefresh 合并?

java - 如何在java中阻止子进程并重新启动它们

java - 用户输入一个 int,它被添加到一个数组中 - Java

java - 具有 Flex、BlazeDS、Apache Tomcat、Java 和 Hibernate 的应用程序

java - repaint 方法一旦调用就什么都不做

html - 在类似按钮的 UI 元素中包装文本框文本