当前位置: 代码迷 >> Java相关 >> KeyListener接口怎么实现啊?
  详细解决方案

KeyListener接口怎么实现啊?

热度:374   发布时间:2007-01-08 14:16:44.0
KeyListener接口怎么实现啊?

我想在JButton上添加一个Key事件,按下回车时有反映
但是写了半天实现不了
谁能帮我写个简单的例子

搜索更多相关的解决方案: KeyListener  接口  JButton  例子  回车  

----------------解决方案--------------------------------------------------------

你把你的代码贴上来!


----------------解决方案--------------------------------------------------------

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
class randomDemo extends JFrame {
int number ;
Container c;
JButton b;
JLabel la;
String s;
public randomDemo()
{
this.setTitle("random number");
c = this.getContentPane();
c.setLayout(new BorderLayout());
Lis l = new Lis();
b = new JButton("产生一个0~100的随机数");
b.addActionListener(l);
b.addKeyListener(l);
la = new JLabel();
number = new Random().nextInt()%10;
c.add(la,BorderLayout.NORTH);
c.add(b,BorderLayout.SOUTH);
this.setBounds(400,200,250,150);

}
class Lis implements ActionListener,KeyListener {
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==b)
{
check();
}
}
public void keyPressed(KeyEvent e) {

}
public void keyReleased(KeyEvent e) {

}
public void keyTyped(KeyEvent e) {
System.out.println(e.getKeyCode());
System.out.println(e.VK_ENTER);
if(e.getKeyCode()==e.VK_ENTER)
{
check();
}
}
}

public void check(){
number = Math.abs(new Random().nextInt()%100);
s = new String("随机数是:"+number);
la.setText(s);
}
public static void main(String []args)
{

randomDemo r= new randomDemo();
r.setVisible(true);


}
}
我想在按下回车键的时候也跟点击鼠标一样产生事件
----------------解决方案--------------------------------------------------------
keyTyped事件只有在输入的时候才会发生,一般用于JTextField,JTextArea,等文本输入区的监听,用于普通组件是没有用的

并且你按钮要监听这个干嘛,按下去本身不就是ActionEvent吗?

至于你按回车钮也产生点击一样的,是因为你的按钮得到输入焦点,你按回车键等于点了一下按钮,这也是按钮应该具备的功能
----------------解决方案--------------------------------------------------------
在一个按钮上难道加一个键盘事件难道没有意义吗?

----------------解决方案--------------------------------------------------------

package p1;

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
class randomDemo extends JFrame {
int number ;
Container c;
JButton b;
JLabel la;
String s;
public randomDemo()
{
this.setTitle("random number");
c = this.getContentPane();
c.setLayout(new BorderLayout());
Lis l = new Lis();
b = new JButton("产生一个0~100的随机数");
b.addActionListener(l);
b.addKeyListener(l);
la = new JLabel();
number = new Random().nextInt()%10;
c.add(la,BorderLayout.NORTH);
c.add(b,BorderLayout.SOUTH);
this.setBounds(400,200,250,150);

}
class Lis implements ActionListener,KeyListener {
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==b)
{
check();
}
}
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode()==e.VK_ENTER)
{
check();
}
}
public void keyReleased(KeyEvent e) {

}
public void keyTyped(KeyEvent e) {
// System.out.println(e.getKeyCode());
// System.out.println(e.VK_ENTER);

}
}

public void check(){
number = Math.abs(new Random().nextInt()%100);
s = new String("随机数是:"+number);
la.setText(s);
}
public static void main(String []args)
{

randomDemo r= new randomDemo();
r.setVisible(true);


}
}


----------------解决方案--------------------------------------------------------
以下是引用WestNet在2007-1-8 16:10:59的发言:
在一个按钮上难道加一个键盘事件难道没有意义吗?

那 是一点意义都没有


----------------解决方案--------------------------------------------------------
public void keyTyped(KeyEvent e)
{

}
在这里面怎么实现
----------------解决方案--------------------------------------------------------

public void keyTyped(KeyEvent e)
{

它只在你输入的时候会调用,一般的组件是不是调用的


----------------解决方案--------------------------------------------------------