1、第一个是传智毕老师视频的做法
</pre><pre code_snippet_id="393765" snippet_file_name="blog_20140615_1_7804825" name="code" class="java">import java.awt.FlowLayout;
import java.awt.TextField;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
public class MouseAndKeyDemo {
private JFrame f;
private TextField tf;
public MouseAndKeyDemo() {
f = new JFrame("演示鼠标和键盘监听");
f.setBounds(400,200,500,400);
f.setLayout(new FlowLayout());
tf = new TextField(35);
f.add(tf);
//给文本框添加键盘监听。
tf.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
int code = e.getKeyCode();
if(!(code>=KeyEvent.VK_0 && code<=KeyEvent.VK_9)){
e.consume();
}
}
});
f.setVisible(true);
}
public static void main(String[] args) {
new MouseAndKeyDemo();
}
}
这个可以正常运行,而且能达到只显示数字的功能。
2、这是我模仿第一个写的
import java.awt.FlowLayout;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class Test_JT extends JFrame{
private JTextField jt = new JTextField(20);
public Test_JT(){
super("test jt");
setLayout(new FlowLayout());
jt.setSize(30, 10);
add(jt);
jt.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e){
int code = e.getKeyCode();
if(!(code >= KeyEvent.VK_0 && code <= KeyEvent.VK_9)){
e.consume();
}
}
});
setSize(400, 300);
setVisible(true);
}
public static void main(String[] args){
new Test_JT();
}
}
3、这个是百度知道网友的答案
import java.awt.FlowLayout;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class Test_JT extends JFrame
{
private JTextField jt = new JTextField(20);
public Test_JT()
{
super("test jt");
setLayout(new FlowLayout());
jt.setSize(30, 10);
add(jt);
jt.addKeyListener(new KeyAdapter()
{
public void keyTyped(KeyEvent e)
{
System.out.println(e);
char code = e.getKeyChar();
if (!(code >= KeyEvent.VK_0 && code <= KeyEvent.VK_9))
{
e.consume();
}
}
});
setSize(400, 300);
setVisible(true);
}
public static void main(String[] args)
{
new Test_JT();
}
}
这个对我的修改,也能实现功能。
对比一下,为什么我模仿传智的的不能实现那个功能呢?只因为那个继承关系吗?