Java GUI-记录分配给按钮的编号
有人知道如何将数字存储到Java GUI-记录分配给按钮的编号,java,swing,user-interface,jbutton,Java,Swing,User Interface,Jbutton,有人知道如何将数字存储到JButtons?例如,每次用户按下按钮时,我都要记录该数字 我假设您有一个类,其中有一个您单击的按钮。使此类实现侦听器接口。如果我没有记错的话,接口是ActionListener,方法是actionPerformed。在此方法中,增加该特定按钮的计数器。例如,您可以将数字存储在HashMap中。我假设您有一个类,其中有一个您单击的按钮。使此类实现侦听器接口。如果我没有记错的话,接口是ActionListener,方法是actionPerformed。在此方法中,增加该特
JButtons
?例如,每次用户按下按钮时,我都要记录该数字 我假设您有一个类,其中有一个您单击的按钮。使此类实现侦听器接口。如果我没有记错的话,接口是ActionListener
,方法是actionPerformed
。在此方法中,增加该特定按钮的计数器。例如,您可以将数字存储在HashMap
中。我假设您有一个类,其中有一个您单击的按钮。使此类实现侦听器接口。如果我没有记错的话,接口是ActionListener
,方法是actionPerformed
。在此方法中,增加该特定按钮的计数器。例如,您可以将数字存储在HashMap
中。只需将ActionListener
链接到按钮,并在每次调用actionPerformed
callbak时增加一个变量:
yourButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
variable++;
}
});
有关更多详细信息,您可以阅读官方的,只需将一个
ActionListener
链接到您的按钮,并在每次调用actionPerformed
callbak时增加一个变量:
yourButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
variable++;
}
});
有关更多详细信息,您可以阅读官方的您应该使用ActionListener,您可以使用一个列表,如下所示:
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class NumberButtons extends JFrame {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new NumberButtons().setVisible(true);
}
});
}
private List<JButton> buttons = new ArrayList<JButton>();
private ActionListener listener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int index = buttons.indexOf(e.getSource());
System.out.println("Number " + index + " pressed");
}
};
public NumberButtons() {
JPanel pNum = new JPanel();
pNum.setLayout(new GridLayout(3,4));
for (int i = 0; i < 10; ++i) {
JButton b = new JButton("" + i);
b.addActionListener(listener);
pNum.add(b);
buttons.add(b);
}
this.add(pNum);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.pack();
}
}
导入java.awt.GridLayout;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.util.ArrayList;
导入java.util.List;
导入javax.swing.JButton;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
导入javax.swing.SwingUtilities;
公共类NumberButtons扩展JFrame{
公共静态void main(字符串[]args){
SwingUtilities.invokeLater(新的Runnable(){
公开募捐{
新的NumberButtons().setVisible(true);
}
});
}
私有列表按钮=新建ArrayList();
私有ActionListener=新ActionListener(){
@凌驾
已执行的公共无效操作(操作事件e){
int index=buttons.indexOf(e.getSource());
系统输出打印项次(“数字”+索引+“按下”);
}
};
公共数字按钮(){
JPanel pNum=新的JPanel();
pNum.setLayout(新网格布局(3,4));
对于(int i=0;i<10;++i){
JButton b=新JButton(“+i”);
b、 addActionListener(listener);
pNum.添加(b);
按钮。添加(b);
}
添加(pNum);
此.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
这个包();
}
}
您应该使用ActionListener,您可以使用列表,如下所示:
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class NumberButtons extends JFrame {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new NumberButtons().setVisible(true);
}
});
}
private List<JButton> buttons = new ArrayList<JButton>();
private ActionListener listener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int index = buttons.indexOf(e.getSource());
System.out.println("Number " + index + " pressed");
}
};
public NumberButtons() {
JPanel pNum = new JPanel();
pNum.setLayout(new GridLayout(3,4));
for (int i = 0; i < 10; ++i) {
JButton b = new JButton("" + i);
b.addActionListener(listener);
pNum.add(b);
buttons.add(b);
}
this.add(pNum);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.pack();
}
}
导入java.awt.GridLayout;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.util.ArrayList;
导入java.util.List;
导入javax.swing.JButton;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
导入javax.swing.SwingUtilities;
公共类NumberButtons扩展JFrame{
公共静态void main(字符串[]args){
SwingUtilities.invokeLater(新的Runnable(){
公开募捐{
新的NumberButtons().setVisible(true);
}
});
}
私有列表按钮=新建ArrayList();
私有ActionListener=新ActionListener(){
@凌驾
已执行的公共无效操作(操作事件e){
int index=buttons.indexOf(e.getSource());
系统输出打印项次(“数字”+索引+“按下”);
}
};
公共数字按钮(){
JPanel pNum=新的JPanel();
pNum.setLayout(新网格布局(3,4));
对于(int i=0;i<10;++i){
JButton b=新JButton(“+i”);
b、 addActionListener(listener);
pNum.添加(b);
按钮。添加(b);
}
添加(pNum);
此.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
这个包();
}
}
这里有一个快速的JButton子类,它可以满足您的需要。是的,不需要子类化就可以完成,但是如果您想修改JButton的行为(因此它有一个类似于本例的附加状态),子类化是一个很好的选择
public class CountButton extends JButton implements ActionListener {
private int count;
CountButton() {
super();
}
@Override
public void actionPerformed(ActionEvent ae) {
++count;
}
public int getCount() {
return count;
}
} // CountButton class
下面是一个快速的JButton子类,它可以满足您的需要。是的,不需要子类化就可以完成,但是如果您想修改JButton的行为(因此它有一个类似于本例的附加状态),子类化是一个很好的选择
public class CountButton extends JButton implements ActionListener {
private int count;
CountButton() {
super();
}
@Override
public void actionPerformed(ActionEvent ae) {
++count;
}
public int getCount() {
return count;
}
} // CountButton class
你说的“记录”和“将数字存储到JButtons”是什么意思?我猜你的最终目标不是从JButtons中检索数字。你的问题听起来像是在试图以一种可能迂回的方式实现某件事。从更广泛的意义上讲,你想做什么?本案的具体情况是什么?这些数字需要在哪里结束?store和record都可以引用多种内容。有关可以满足整个规范的代码,请参阅。或此相关。您所说的“record”和“store number to JButtons”是什么意思?我猜您的最终目标不是从JButtons检索数字。你的问题听起来像是在试图以一种可能迂回的方式实现某件事。从更广泛的意义上讲,你想做什么?本案的具体情况是什么?这些数字需要在哪里结束?存储和记录都可以引用多种内容。有关可以满足整个规范的代码,请参阅。或此相关文档。