java如何监听所有按钮
我在做计算器,声明很多按钮作数字键,但不懂如何监听全部按钮并把按过的按钮的值在到文本框里显示,监听一个按钮就用以下代码,但如果全部按钮都要弄不就很麻烦?所以怎样把全部按钮...
我在做计算器,声明很多按钮作数字键,但不懂如何监听全部按钮并把按过的按钮的值在到文本框里显示,监听一个按钮就用以下代码,但如果全部按钮都要弄不就很麻烦?所以怎样把全部按钮都监听并加动作进去。
JButton btn1=new JButton("1");
JTextField tf=new JTextField("0.",30);
btn0.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
String str = btn1.getText();
field.setText(str);
}
}); 展开
JButton btn1=new JButton("1");
JTextField tf=new JTextField("0.",30);
btn0.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
String str = btn1.getText();
field.setText(str);
}
}); 展开
5个回答
展开全部
先定义一个监听器al:
ActionListener al = new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
String str = btn1.getText();
field.setText(str);
}
};
然后所有button都调用addActionListener(al);这样al就可以监听所有button的点击事件了.通过e.getSource()获取哪个按钮,然后获取按钮上的数字即可.
ActionListener al = new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
String str = btn1.getText();
field.setText(str);
}
};
然后所有button都调用addActionListener(al);这样al就可以监听所有button的点击事件了.通过e.getSource()获取哪个按钮,然后获取按钮上的数字即可.
展开全部
一般的作法当然是你说的那种,不过全部按钮都监听貌似很难实现,你说的那个把按过的按钮的值输入到文本框时,我以前的作法是用一个StringBuffer,当点击确认按钮的时候然后把StringBuffer的内容显示出来!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
定义一个类,实现ActionListener接口,设该类为 ButtonHandler;
然后对每个按钮添加监听时都用该类
如button1.addActionListener(new ButtonHandler());
然后对每个按钮添加监听时都用该类
如button1.addActionListener(new ButtonHandler());
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用ActionListener:
ActionListener action = new ActionListener(){
@Override public void actionPerformed(ActionEvent e){
tf.setText(tf.getText()+e.getActionCommand());
}
}
numberbutton.addActionListener(action);
如果JButton没有调用setActionCommand方法。e.getActionCommand()返回的就和JButton的getText()一致。
===========================================
另一种方法是使用Action:
public class NumberAction extends AbstractAction {
private static final long serialVersionUID = -3941319225168433304L;
private transient JTextField input;
public NumberAction(final String label, final JTextField input) {
super(label);
this.input = input;
}
@Override
public void actionPerformed(final ActionEvent e) {
input.setText(input.getText() + e.getActionCommand());
}
}
final JTextField input = ...;
for (int i = 0; i < 10; i++) {
add(new JButton(new NumberAction(Integer.toString(i), input)));
}
ActionListener action = new ActionListener(){
@Override public void actionPerformed(ActionEvent e){
tf.setText(tf.getText()+e.getActionCommand());
}
}
numberbutton.addActionListener(action);
如果JButton没有调用setActionCommand方法。e.getActionCommand()返回的就和JButton的getText()一致。
===========================================
另一种方法是使用Action:
public class NumberAction extends AbstractAction {
private static final long serialVersionUID = -3941319225168433304L;
private transient JTextField input;
public NumberAction(final String label, final JTextField input) {
super(label);
this.input = input;
}
@Override
public void actionPerformed(final ActionEvent e) {
input.setText(input.getText() + e.getActionCommand());
}
}
final JTextField input = ...;
for (int i = 0; i < 10; i++) {
add(new JButton(new NumberAction(Integer.toString(i), input)));
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先你得在所有按钮上注册监听器,button.addActionListener(这里面可以是同一个监视器);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询