在 JFrame 中使用按钮数组

问题描述

我在 Java 中做了一个 JButton 数组,但我不知道在框架中呈现它们,这可能吗?

这是数组,我插入到每个索引ImageIcon

JButton [] buttons=new JButton[55];

解决方法

例如这个:

javax.swing.JFrame frame = new javax.swing.JFrame("Just a JFrame Window Demo");
frame.setAlwaysOnTop(true);
frame.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
frame.setLayout(new java.awt.BorderLayout());

javax.swing.JPanel topPanel = new javax.swing.JPanel();
topPanel.setLayout(new java.awt.GridLayout());
javax.swing.JLabel headerLabel = new javax.swing.JLabel(
        "50 JButtons in a grid using the GridLayout Layout:");
headerLabel.setHorizontalAlignment(javax.swing.JLabel.CENTER);
headerLabel.setPreferredSize(new java.awt.Dimension(500,80));
topPanel.add(headerLabel);

javax.swing.JPanel centerPanel = new javax.swing.JPanel();
centerPanel.setLayout(new java.awt.GridLayout(5,10));
javax.swing.JButton[] buttons = new javax.swing.JButton[50];
for (int i = 0; i < buttons.length; i++) {
    buttons[i] = new javax.swing.JButton(String.valueOf(i));
    buttons[i].setName("button_" + i);
    buttons[i].addActionListener(new AllButtonsActionListener());
    centerPanel.add(buttons[i]);
}

javax.swing.JPanel bottomPanel = new javax.swing.JPanel();
bottomPanel.setLayout(new java.awt.FlowLayout());
javax.swing.JButton somethingButton = new javax.swing.JButton("Some Button");
somethingButton.addActionListener(new AllButtonsActionListener());

javax.swing.JButton exitButton = new javax.swing.JButton("Exit");
exitButton.addActionListener(new AllButtonsActionListener());
bottomPanel.add(somethingButton);
bottomPanel.add(exitButton);

frame.add(topPanel,BorderLayout.NORTH);
frame.add(centerPanel,BorderLayout.CENTER);
frame.add(bottomPanel,BorderLayout.SOUTH);
frame.pack();

javax.swing.SwingUtilities.invokeLater(() -> {
    frame.setVisible(true);
    frame.setLocationRelativeTo(null);
});

还有一个内部类来捕捉按钮选择:

// Inner Class
class AllButtonsActionListener implements java.awt.event.ActionListener {
    @Override
    public void actionPerformed(java.awt.event.ActionEvent e) {
        String aCmd = e.getActionCommand().toLowerCase();
        System.out.println("Action Command is: " + aCmd);

        if (aCmd.equals("exit")) {
            System.exit(0);
        }
    }
}    

当上面的代码运行时,你应该看到...

enter image description here

当您选择任何按钮时,其标题将显示在控制台窗口中。