没有编译过。你自己试试看吧。
import java.awt.*;
import java.awt.event.*;public class Test extends Frame implements KeyListener{ public static void main(String[] args){
Test test = new Test();
test.init();
} private void init(){
this.setLayout(new BorderLayout());
Button btn = new Button("fffff");
btn.addKeyListener(this);
this.add(btn,BorderLayout.SOUTH);
this.setBounds(0,0,200,200);
this.setVisible(true);
} public void keyPressed(KeyEvent e) {
System.out.println(e.getKeyCode());
switch (e.getKeyCode()){
case : 10 //enter
// do something here.
break;
case : 27 //esc
System.exit(0);
break;
default :
}
} public void keyReleased(KeyEvent e) {
} public void keyTyped(KeyEvent e) {
}
}
import java.awt.*;
import java.awt.event.*;public class Test extends Frame implements KeyListener{ public static void main(String[] args){
Test test = new Test();
test.init();
} private void init(){
this.setLayout(new BorderLayout());
Button btn = new Button("fffff");
btn.addKeyListener(this);
this.add(btn,BorderLayout.SOUTH);
this.setBounds(0,0,200,200);
this.setVisible(true);
} public void keyPressed(KeyEvent e) {
System.out.println(e.getKeyCode());
switch (e.getKeyCode()){
case : 10 //enter
// do something here.
break;
case : 27 //esc
System.exit(0);
break;
default :
}
} public void keyReleased(KeyEvent e) {
} public void keyTyped(KeyEvent e) {
}
}
解决方案 »
- 关于类、属性、对象、单向列表问题,新人求助,谢谢!祝大家新年快乐!
- 一个枚举考试题的输出,大家 不要执行的情况下,能看出来的吗?
- JAVASCRIPT在图片中取一个坐标点,鼠标点住左键拉伸一定区域,我想要得到这个点的坐标x,y值,还有拉伸一定区域的长,宽值。哪位js高手帮我看看怎么弄
- filedialog对话框打开文件在textarea中的显示问题
- 改写trim() 方法 使其忽略中间空白
- 新手想入JAVA門,求解入門級的3個問題
- 请教:JFrame和Frame 有什么区别?
- 谁能帮忙解释一下getCodeBase().getHost()?最好有个例子
- 我是初学者,如何把c盘下的文件夹 class12, 打包成class12.jar文件,我这老是出问题
- 请问:为何javax.sql在JAVA 2 API中找不到?
- 根据Java提供的.class的文件结构我们可以编写出针对.class文件的反编译程序吗?
- 请教几个简单问题哦。(applet加图片,jtree的拖放,panel加图标)
test.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e) {
int i = e.getKeyCode();
if(i == KeyEvent.VK_ENTER){}
else if(i == KeyEvent.VK_ESCAPE){}
}
});
test.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e) {
int i = e.getKeyCode();
if(i == KeyEvent.VK_ENTER){}
else if(i == KeyEvent.VK_ESCAPE){}
}
});
我想问一下:那原本的按钮事件响应呢?
如果实现?
void jButton1_actionPerformed(ActionEvent e) {
this.dispose();
}
上面的是事件都是KeyEvent e,我无法让它们调用成功
void jButton1_actionPerformed(ActionEvent e) {
this.dispose();
}
你试一下,打印个语句看看.
在打印语句的地方加入你的代码就回ok.
Button test = new Button();
test.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e) {
int i = e.getKeyCode();
if(i == KeyEvent.VK_ENTER){System.out.println("1111111");}
else if(i == KeyEvent.VK_ESCAPE){System.out.println("222222");}
}
});而且这与你的:
void jButton1_actionPerformed(ActionEvent e) {
this.dispose();
}
并不矛盾.
import java.awt.event.*;public class Test extends Frame implements KeyListener, ActionListener{ public static void main(String[] args){
Test test = new Test();
test.init();
} private void init(){
this.setLayout(new BorderLayout());
Button btn = new Button("fffff");
btn.addKeyListener(this);
btn.addActionListener(this);
this.add(btn,BorderLayout.SOUTH);
this.setBounds(0,0,200,200);
this.setVisible(true);
} private void dosomething(){
//do something here.
} public void actionPerformed(ActionEvent e){
dosomething();
}
public void keyPressed(KeyEvent e) {
System.out.println(e.getKeyCode());
switch (e.getKeyCode()){
case : 10 //enter
dosomething();
break;
case : 27 //esc
System.exit(0);
break;
default :
}
} public void keyReleased(KeyEvent e) {
} public void keyTyped(KeyEvent e) {
}
}
if (e.getKeyCode()==e.VK_ENTER) System.exit(0);
}
上面给出的全部是KeyEvent e,我没有办法在键盘响应时调用
public void actionPerformed(ActionEvent e){
dosomething();
}
方法。因为两个Event参数不同,没办法调用
上面全部是需要我写两个同样处理的方法,但在事实上这是不可能的,我调用这个dialog的时候还要重写这个方法,如果按上面的处理,我岂不是要重写两个?还要判断是否要重写哪一个,这不是要命么?
所以上面的全部都不行。
我需要的是键盘响应和按钮响应响应同一个事件
public void actionPerformed(ActionEvent e){
dosomething();
}
而不是各自响应
最好给出整个程序的源码。
楼上根本没有搞清楚我的需求。
我实说键盘响应的时候也要调用
public void actionPerformed(ActionEvent e){
dosomething();
}。
我不知道你们怎么可能调用成功?一个是KeyEvent,一个是ActionEvent,参数都不同。所以楼上的都是要我对同一个处理写两个不同的方法。但这是不可行的,我在调用这个dialog的时候,需要覆盖这个方法,所以写两个同样处理的不同名的方法是不行的,因为那还要我判断需要覆盖哪个
能够真正解决问题的,请附全部的代码
自己没说清楚还怪别人
import java.awt.event.*;public class Test extends Dialog {
Button btnOK = new Button("OK");
Button btnCancel = new Button("Cancel");
Button btnClean = new Button("Clean");
Label lblResult = new Label();
TextField txtTest = new TextField();
public Test() {
super(new Frame());
this.setTitle("Test");
this.setSize(400, 180);
this.setLayout(null);
this.add(txtTest);
txtTest.setBounds(100,70,200,20);
this.add(lblResult);
lblResult.setBounds(100,40,200,20);
this.add(btnOK);
btnOK.setBounds(300,130,60,25);
this.add(btnClean);
btnClean.setBounds(200,130,60,25);
this.add(btnCancel);
btnCancel.setBounds(40,130,60,25);
SymAction symAction = new SymAction();
btnOK.addActionListener(symAction);
btnCancel.addActionListener(symAction);
btnClean.addActionListener(symAction);
setKeyListener();
}
public static void main(String[] argv) {
Test temp = new Test();
temp.setVisible(true);
}
class SymAction implements ActionListener {
public void actionPerformed(ActionEvent event) {
Object obj = event.getSource();
if (obj == btnOK) {
btnOK_actionPerformed();
} else if (obj == btnCancel) {
btnCancel_actionPerformed();
} else if (obj == btnClean) {
btnClean_actionPerformed();
}
}
}
private void btnOK_actionPerformed() {
lblResult.setText("You have press OK!");
}
private void btnCancel_actionPerformed() {
System.exit(0);
}
private void btnClean_actionPerformed() {
lblResult.setText("");
txtTest.setText("");
}
class SymKey extends KeyAdapter {
public void keyPressed(KeyEvent ke) {
if (ke.getKeyCode() == KeyEvent.VK_ENTER) {
btnOK_actionPerformed();
} else if (ke.getKeyCode() == KeyEvent.VK_ESCAPE) {
btnCancel_actionPerformed();
} else {
super.keyReleased(ke);
}
}
}
private void setKeyListener() {
SymKey symKey = new SymKey();
Component[] components = this.getComponents();
for (int i = 0; i < components.length; i++) {
components[i].addKeyListener(symKey);
}
}
}