gpt4 book ai didi

java - 循环创建保存其名称值的 JButton

转载 作者:行者123 更新时间:2023-11-30 02:55:10 26 4
gpt4 key购买 nike

编辑:这个问题的按钮生成部分的答案可以在这里找到: Array that Holds JButton Objects

我使用 for 循环生成一些 JButton,每个 JButton 都标有其索引。在循环中,我将一个 ActionListener 附加到每个按钮。监听器检索按钮的标签并打印它。目前,唯一返回值的按钮是最后创建的按钮,这是有道理的。我想知道是否有一种方法可以进行这种批量生成,然后以有利的方式进行单独检索。

简而言之:

在循环中制作一堆带标签的 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 打印到控制台。

关于java - 循环创建保存其名称值的 JButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37448311/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com