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),可以给文本框注册时间监听器来响应事件。