任何人都知道如何将号码存储到JButtons
?例如,每次用户按下按钮时,我想记录该号码。
答案 0 :(得分:3)
你应该使用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();
}
}
答案 1 :(得分:1)
我假设你有一个班级,你点击一个按钮。使此类实现一个侦听器接口。如果我没记错的话,界面是ActionListener
,方法是actionPerformed
。在此方法中,增加该特定按钮的计数器。例如,您可以将数字存储在HashMap<JButton, Integer>
中。
答案 2 :(得分:1)
只需将ActionListener
链接到您的按钮,并在每次调用actionPerformed
callbak时递增变量:
yourButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
variable++;
}
});
有关详细信息,请阅读官方documentation
答案 3 :(得分:0)
这是一个快速的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