java—如何在循环中添加特定数量的按钮

vyswwuz2  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(350)

我有一个问题,添加一个特定数量的按钮从我的for循环到我的jpanel,我知道如何添加所有oof他们,但我只想添加1-10(我还没有决定,让我们去10)。'
这是我的类,我只声明我想要的对象。

private static int cID;
    private static Deck[] card;
    static ArrayList<JButton> buttonList = new ArrayList<JButton>();
    private JFrame f;
    private JPanel p1;
    private JButton button;
public boolean isEmpty() {
    return cID == 0;
}
public static void main(String[] args) {
    CustomDecks c = new CustomDecks();
    c.deckCreator();
}```

这是我的for循环,我创建了420个按钮,并给它们命名为“card”+i,其中我是0-419,但当我试图添加card0到我的面板,它失败了,为什么?

private void deckCreator() {
    card = new Deck[25];
    new ArrayList<Cards> (cSet.cards);
    for(int i = 0; i < 420; i++) {
        button = new JButton();
        buttonList.add(button);
        button.setName("card" + i);
        f.add(button);
        p1.add(card0);
        }
    f.add(p1);
    f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    f.setVisible(true);
    f.setExtendedState(Frame.MAXIMIZED_BOTH);
    f.setUndecorated(true);
}
}
}
iqih9akk

iqih9akk1#

我不确定你能不能创造一个 JPanel 足够容纳420人 JButtons .
下面是一个 JButton 图形用户界面。
[

通常,您要分别创建应用程序模型和视图。该模型由一个或多个纯java类组成。视图读取应用程序模型,但不更新模型。
您的控制器类( ActionListener 类)更新应用程序模型并更新/重新绘制视图。
这种模式称为模型/视图/控制器(model/view/controller,mvc)模式。
您可以在下面的示例代码中看到,模型是在视图类构造函数中创建的。通常,首先创建应用程序模型,然后创建应用程序视图。
下面是完整的可运行代码。

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.GridLayout;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.UIManager;

public class JButtonScrollGUI {
    private JFrame frame;

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                    new JButtonScrollGUI();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }

        });
    }

    private String[] greekAlphabet;

    public JButtonScrollGUI() {
        this.greekAlphabet = new String[] { "alpha", "beta", "gamma", "epsilon", "zeta" };
        initialize();
    }

    private void initialize() {
        frame = new JFrame();
        frame.setTitle("Application");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        frame.add(createScrollPanel(), BorderLayout.CENTER);

        frame.pack();
        frame.setLocationByPlatform(true);
        frame.setVisible(true);
    }

    private JPanel createScrollPanel() {
        JPanel panel = new JPanel(new BorderLayout());

        JPanel innerPanel = createButtonPanel();
        Dimension d = innerPanel.getPreferredSize();
        d.width += 50;
        d.height /= 2;
        panel.setPreferredSize(d);

        JScrollPane scrollPane = new JScrollPane(innerPanel);

        panel.add(scrollPane, BorderLayout.CENTER);
        return panel;
    }

    private JPanel createButtonPanel() {
        JPanel panel = new JPanel(new GridLayout(0, 3, 10, 10));
        panel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));

        for (int i = 0; i < 20; i++) {
            JButton button1 = new JButton("Previous " + i);
            panel.add(button1);

            JComboBox<String> selectorBox = new JComboBox<>(greekAlphabet);
            panel.add(selectorBox);

            JButton button2 = new JButton("Next " + i);
            button2.setPreferredSize(button1.getPreferredSize());
            panel.add(button2);
        }

        return panel;
    }

}

相关问题