重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在public void actionPerformed(ActionEvent e) 方法中加入如下代码:
创新互联是一家专业提供中原企业网站建设,专注与成都网站设计、做网站、成都外贸网站建设公司、H5技术、小程序制作等业务。10年已为中原众多企业、政府机构等服务。创新互联专业网站建设公司优惠进行中。
if (e.getSource()==a) {
System.out.println("a");
} else if (e.getSource() == b) {
System.out.println("b");
} else if (e.getSource() == c) {
System.out.println("c") ;
}
另外:你似乎还有语法错误:
for (int i = 0; i allButtons.length; i++) {
allButtons[i].addActionListener(this);}
这句话的位置没有放对,放这里肯定会报空指针,说你的allButton为空
最好放在你的注释:注册监听程序
这个之后
1,为相应的控件设置KeyListener()的监听
2,实现接口中的方法
3,主要重写keyPressed()这个方法
4,书写逻辑
5,见代码
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_1e.getKeyCode()==KeyEvent.VK_2){
System.out.println("1,2键被点击了。。。");
}
}ps,还可以自己写一个数组记录每个按键的状态,根据状态值进行逻辑处理。
你这个问题是由于焦点(Focus)不正确引起的问题.
在窗口打开之后,如果焦点落在Frame上面,按键被Frame捕获,提示输出,如果焦点落在Button上面,刚按键被Button捕获,当然就没有输出.
更改方法有如下建议:
1.this.setFocusable(true);加在构造函数最后,可以保证Frame可以响应键盘事件,但是按下按扭之后焦点转移,键盘事件不再被Frame响应,因此需要按Tab键重新让Frame得到焦点.(不推荐此方法,不知道按Tab键的用户就惨了...)
2. 将键盘响应KeyListener分别注册给所有的Button.
最后代码如下:
import java.awt.*;
import java.awt.event.*;
public class ButtonTest extends Frame implements KeyListener,ActionListener{
private Button b1;
private Button b2;
public ButtonTest(int i,int j) {
addKeyListener(this);
setLayout(new FlowLayout(1));
b1=new Button("yellow");
b1.addActionListener(this);
b1.addKeyListener(this);
b2=new Button("blue");
b2.addActionListener(this);
b2.addKeyListener(this);
setSize(i, j);
add(b1);add(b2);
pack();
setVisible(true);
this.setFocusable(true);
}
//实现ActionListener接口方法
public void actionPerformed(ActionEvent a) {
if (a.getActionCommand().equals("yellow")) {
b1.setBackground(Color.red);
b2.requestFocus();//点击button1时把事件焦点给b2
} else if (a.getActionCommand().equals("blue")) {
b2.setBackground(Color.BLUE);
}
}
//实现keylistener的3个方法
public void keyTyped(KeyEvent e){
System.out.println("KeyTyped"+" "+e);
}
public void keyPressed(KeyEvent e){
System.out.println("KeyPressed"+" "+e);
}
public void keyReleased(KeyEvent e){
System.out.println("KeyReleased"+" "+e);
}
public static void main(String[] args) {
ButtonTest my=new ButtonTest(300,300);
my.setSize(200,200);
}
}
把下面两个类去了,直接用匿名内部类来实现...
b1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
System.out.print(jt.getText());
}
});
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
jt.setText("");
DoubleColorBall dbcb = new DoubleColorBall();
try {
// 根据文本框里输入的数字,调用DoubleColorBall中的方法生成彩票
String[] num = dbcb.getNumber(Integer
.parseInt(jf.getText()));
for (int i = 0; i num.length; i++) {
jt.append(num[i] + "\n");
}
} catch (Exception e) {
e.printStackTrace();
jt.setText("请输入正整数数字");
}
}
});