Java文本框和键盘事件处理例题


  编写窗体程序,界面上设置三个文本框,第一个文本框给用户输入商品单价,第二个则是给用户输入商品数量,第三个用于显示总金额。

要求:

①单价框和商品数量框中要求输入的只能数字;

②当在单价框中按“回车”时商品数量框获得焦点,当在数量框中按“回车”时完成计算并在总金额框中显示总金额。

 1 import javax.swing.*;
 2 import java.awt.event.*;
 3 public class eg3 extends JFrame{
 4     JLabel L1,L2,L3;
 5     JTextField text1,text2,text3;
 6     double t1,t2;
 7     
 8     public eg3() {
 9         super("计算总金额");
10         setSize(300,150);
11         init();
12         //点击主窗体上的“x”,可关闭退出程序
13         setDefaultCloseOperation(EXIT_ON_CLOSE);
14         //显示主窗体
15         setVisible(true);
16     }
17     
18     public double shuZhi(String s) {
19         double shu=0;
20         //如果转换报错,则字符串中有非数字,弹出消息窗口
21         try {
22             shu=Double.parseDouble(s); 
23         } catch (Exception e) {
24             JOptionPane.showMessageDialog(null,"价格必须为数值");
25         }
26         return shu;
27     }
28     
29     public void init() {
30         L1=new JLabel("商品单价:");
31         L2=new JLabel("购买数量:");
32         L3=new JLabel("应付金额:");
33         text1=new JTextField(20);
34         text2=new JTextField(20);
35         text3=new JTextField(20);
36         text3.setEditable(false);
37         
38         setLayout(null);
39         L1.setBounds(30,10,60,20);
40         text1.setBounds(90,10,150,20);
41         L2.setBounds(30,40,60,20);
42         text2.setBounds(90,40,150,20);
43         L3.setBounds(30,70,60,20);
44         text3.setBounds(90,70,150,20);
45         add(L1);
46         add(text1);
47         add(L2);
48         add(text2);
49         add(L3);
50         add(text3);
51         
52         //text1文本框中回车触发事件
53         text1.addKeyListener(new KeyAdapter() {
54             public void keyTyped(KeyEvent e) {
55                 if((char)e.getKeyChar()==KeyEvent.VK_ENTER) {
56                     t1=shuZhi(text1.getText());
57                     //光标移动到text2文本框
58                     text2.requestFocus();    
59                 }
60             }
61         });
62         
63         //text2文本框中回车触发事件
64         text2.addKeyListener(new KeyAdapter() {
65             public void keyTyped(KeyEvent e) {
66                 if((char)e.getKeyChar()==KeyEvent.VK_ENTER) {
67                     t2=shuZhi(text2.getText());
68                     text3.setText(t1*t2+"元");
69                 }
70             }
71         });
72     }
73     
74     public static void main(String[] args) {
75         new eg3();
76     }
77 
78 }

运行效果截图:

相关