循环制作保存其名称值的 JButton
Looping to make JButtons that hold their name values
编辑:这个问题的按钮生成部分的答案可以在这里找到:
Array that Holds JButton Objects
我使用 for 循环生成了一些 JButton,每个 JButton 都标有它们的索引。在循环中,我将 ActionListener 附加到每个按钮。侦听器检索按钮的标签并将其打印出来。目前,唯一一个 returns 值的按钮是最后创建的,这是有道理的。我想知道是否有一种方法可以进行这种大规模生成,然后以有利的方式进行个人检索。
简而言之:
循环制作一堆带标签的 JButton。
单击按钮时打印标签。
这是我当前流程的一个简短的可执行示例:
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JButton;
public class calc {
private JFrame mainFrame;
private JPanel mainPanel;
private JButton button;
public calc(){
mainFrame = new JFrame("Calculator");
mainPanel = new JPanel();
for (int i=0; i<10; i++){
int value = i;
String number = Integer.toString(value);
button = new JButton(number);
button.addActionListener(new ButtonListener());
mainFrame.add(button);
}
mainFrame.setLayout(new FlowLayout());
mainFrame.setSize(250, 300);
mainPanel.setLayout(new FlowLayout());
mainFrame.add(mainPanel);
mainFrame.setVisible(true);
}
class ButtonListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == button) {
System.out.println(((JButton) e.getSource()).getText());
}
}
}
}
您可以创建一个按钮数组,例如:
JButton[] btns = new JButtons[10];
for(int x=0; x<btns.length; x++)
btns[x] = new JButton(x + "");
创建您的 ActionListener:
private class ButtonHandler implements ActionListener{
@Override
public void actionPerformed(ActionEvent e){
System.out.println( ((JButton)e.getSource()).getText() );
}
}
将每个按钮添加到 ActionListener:
ButtonHandler handler = new ButtonHandler();
for(int x=0=; x<btns.length; x++)
btns[x].addActionListener(handler);
当您单击任何按钮时,它会触发 ActionListener 并根据单击的按钮将文本从 JButton 打印到控制台。
编辑:这个问题的按钮生成部分的答案可以在这里找到: Array that Holds JButton Objects
我使用 for 循环生成了一些 JButton,每个 JButton 都标有它们的索引。在循环中,我将 ActionListener 附加到每个按钮。侦听器检索按钮的标签并将其打印出来。目前,唯一一个 returns 值的按钮是最后创建的,这是有道理的。我想知道是否有一种方法可以进行这种大规模生成,然后以有利的方式进行个人检索。
简而言之:
循环制作一堆带标签的 JButton。 单击按钮时打印标签。
这是我当前流程的一个简短的可执行示例:
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JButton;
public class calc {
private JFrame mainFrame;
private JPanel mainPanel;
private JButton button;
public calc(){
mainFrame = new JFrame("Calculator");
mainPanel = new JPanel();
for (int i=0; i<10; i++){
int value = i;
String number = Integer.toString(value);
button = new JButton(number);
button.addActionListener(new ButtonListener());
mainFrame.add(button);
}
mainFrame.setLayout(new FlowLayout());
mainFrame.setSize(250, 300);
mainPanel.setLayout(new FlowLayout());
mainFrame.add(mainPanel);
mainFrame.setVisible(true);
}
class ButtonListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == button) {
System.out.println(((JButton) e.getSource()).getText());
}
}
}
}
您可以创建一个按钮数组,例如:
JButton[] btns = new JButtons[10];
for(int x=0; x<btns.length; x++)
btns[x] = new JButton(x + "");
创建您的 ActionListener:
private class ButtonHandler implements ActionListener{
@Override
public void actionPerformed(ActionEvent e){
System.out.println( ((JButton)e.getSource()).getText() );
}
}
将每个按钮添加到 ActionListener:
ButtonHandler handler = new ButtonHandler();
for(int x=0=; x<btns.length; x++)
btns[x].addActionListener(handler);
当您单击任何按钮时,它会触发 ActionListener 并根据单击的按钮将文本从 JButton 打印到控制台。