在 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如何使用,怎么创建按钮对应的事件,是设置,还是敲代码