获取焦点和选中全部内容


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


猜你喜欢

转载自blog.csdn.net/adnap7/article/details/79313590