將上次做的坪數轉換的程式,透過keyrelease事件
將TextField中限制只允許數字- package tw.kuas.edu.tw;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import javax.swing.JButton;
- import javax.swing.JFrame;
- import javax.swing.JLabel;
- import javax.swing.JTextField;
- import javax.swing.text.BadLocationException;
- import java.awt.event.KeyAdapter;
- import java.awt.event.KeyEvent;
- import java.awt.Color;
- public class Main implements ActionListener{
- public static void main(String[] args) {
- // TODO 自動產生的方法 Stub
- Main app = new Main();
- }
- @Override
- public void actionPerformed(ActionEvent e) {
- // TODO 自動產生的方法 Stub
- if(e.getSource()==btn1)
- {
- tf2.setText("面積為: "+Double.parseDouble(tf1.getText())*3.3058+" 平方公尺");
- }
- if(e.getSource()==btn2)
- {
- tf1.setText("");
- tf2.setText("");
- }
- }
-
- private JFrame fm;
- private JLabel lb1, lb2;
- private JTextField tf1, tf2;
- private JButton btn1, btn2;
- private JButton btnNewButton;
- private JButton btnNewButton_1;
- Main()
- {
- lb1=new JLabel("1坪=3.3058平方公尺",JLabel.CENTER);
- lb1.setBounds(0, 10, 215, 30);
- lb2=new JLabel("輸入坪數:");
- lb2.setBounds(10, 40, 60, 40);
-
- tf1=new JTextField();
- // keypress => 文字放上去後觸發
- //
- // keyrelease =>觸發後再將文字放上去
- tf1.addKeyListener(new KeyAdapter() {
- @Override
- public void keyReleased(KeyEvent e) {
- int code = e.getKeyCode();
- if(code >= 97 && code <= 105)
- {
- System.out.println(code);
- }
- else{
- //先取得畫面上的文字內容
- //刪除掉最後一個字
- //刪除後的結果放到畫面上
- int temp = tf1.getText().length();
- try {
- // char [] chr = tf1.getText().toCharArray();
- // String ss ="";
- // for(int i=0;i<chr.length-1;i++)
- // {
- // ss+=chr[i];
- // }
- String str = tf1.getText(0, --temp);
- tf1.setText(str);
- } catch (BadLocationException e1) {
- // TODO 自動產生的 catch 區塊
- e1.printStackTrace();
- }
-
-
- }
- }
- });
- tf1.setBackground(Color.WHITE);
-
- tf1.setBounds(70, 45, 134, 30);
- tf1.addActionListener(this);
-
- tf2=new JTextField();
- tf2.setBounds(10, 85, 195, 40);
- tf2.setEditable(false);
-
-
- btn1=new JButton("確定");
- btn1.setBounds(10, 135, 92, 25);
- btn1.addActionListener(this);
- btn2=new JButton("清除");
- btn2.setBounds(112, 135, 92, 25);
- btn2.addActionListener(this);
-
- fm=new JFrame("土地面積計算");
- fm.setBounds(100, 100, 306, 306);
- fm.setVisible(true);
- fm.setResizable(false);
- fm.getContentPane().setLayout(null);
- fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- fm.getContentPane().add(lb1);
- fm.getContentPane().add(lb2);
- fm.getContentPane().add(tf1);
- fm.getContentPane().add(tf2);
- fm.getContentPane().add(btn1);
- fm.getContentPane().add(btn2);
-
-
-
-
- }
- }
複製代碼 |