在 JFrame 中使用按钮数组

Posted

技术标签:

【中文标题】在 JFrame 中使用按钮数组【英文标题】:Using an array of buttons in JFrame 【发布时间】:2021-09-10 13:07:20 【问题描述】:

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

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

JButton [] buttons=new JButton[55];

【问题讨论】:

嗯...你想如何在 JFrame 中呈现它们?按钮有什么用?这当然是可能的。 我想在空白 Jframe 中展示它们。 很明显,但格式是什么?就像在类似于计算器的网格中? 是的,例如。 【参考方案1】:

例如:

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);
        
    
    

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

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

【讨论】:

如果有机会也可以调整窗口大小 :) somethingButton.setPreferredSize(..) 最好避免。通过更改文本长度或字体大小、图标大小或边距来更改按钮的大小。

以上是关于在 JFrame 中使用按钮数组的主要内容,如果未能解决你的问题,请参考以下文章

如果我有多个具有相同文本的按钮,如何检查我的 JFrame 中的哪个按钮被单击?

eclipse中jframe如何使用,怎么创建按钮对应的事件,是设置,还是敲代码

单击JFrame上的退出按钮需要关闭JFrame

JFrame从自定义按钮拖动不流畅

使用框架状态变量更新 JFrame 中的 JPanel 内容

如何在jframe中的jpanel中设置单选按钮?