import javax.swing.*; import java.awt.event.*; public class TextFieldExample { public static void main(String[] args) { // TODO Auto-generated method stub JFrame f= new JFrame(); f.setResizable(false); JPanel p=new JPanel(); JLabel labPrice=new JLabel("商品单价"); p.add(labPrice); final JTextField txtPrice=new JTextField(20); p.add(txtPrice); JLabel labAmount=new JLabel("商品数量"); p.add(labAmount); final JTextField txtAmount=new JTextField(20); p.add(txtAmount); JLabel labTotal=new JLabel("商品总额"); p.add(labTotal); final JTextField txtTotal=new JTextField(20); txtTotal.setEditable(false); p.add(txtTotal); txtPrice.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { txtAmount.requestFocus(); //获取焦点 txtAmount.selectAll(); //选中全部内容 } } ); txtAmount.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try {double price=Double.parseDouble(txtPrice.getText()); int amount =Integer.parseInt(txtAmount.getText()); txtTotal.setText(""+price*amount); txtPrice.requestFocus(); txtPrice.selectAll(); }catch (Exception ex) { ex.printStackTrace(); txtTotal.setText("不能计算"); //""为了显示的是字符串形式 txtPrice.requestFocus(); txtPrice.selectAll(); } } } ); f.getContentPane().add(p); f.setSize(300,110); f.show(); } }
通过学习Java程序设计与应用开发GUI编程时看到一个例子,代码如上: (提供运行图片)
其中关于框架具有获取焦点和选中全部内容功能,非常巧妙,记录下来。例如当在【商品单价】文本框中按下Enter键后,输入焦点自动切换到【商品数量】文本框。;而当在商品数量文本框中按下Enter键后,将商品数量*商品单价,并将结果显示在【商品总额】文本框中。原理是当用户在文本框中按下Enter键后,该文本框会产生一个动作事件(ActionEvent),可以给文本框注册时间监听器来响应事件。