返回列表 發帖

[隨堂練習] keyrelease

將上次做的坪數轉換的程式,透過keyrelease事件
將TextField中限制只允許數字
  1. package tw.kuas.edu.tw;

  2. import java.awt.event.ActionEvent;
  3. import java.awt.event.ActionListener;

  4. import javax.swing.JButton;
  5. import javax.swing.JFrame;
  6. import javax.swing.JLabel;
  7. import javax.swing.JTextField;
  8. import javax.swing.text.BadLocationException;

  9. import java.awt.event.KeyAdapter;
  10. import java.awt.event.KeyEvent;
  11. import java.awt.Color;



  12. public class Main implements ActionListener{

  13.         public static void main(String[] args) {
  14.                 // TODO 自動產生的方法 Stub
  15.                 Main app = new Main();
  16.         }

  17.         @Override
  18.         public void actionPerformed(ActionEvent e) {
  19.                 // TODO 自動產生的方法 Stub
  20.                 if(e.getSource()==btn1)
  21.         {
  22.             tf2.setText("面積為: "+Double.parseDouble(tf1.getText())*3.3058+" 平方公尺");
  23.         }
  24.                 if(e.getSource()==btn2)
  25.                 {
  26.                         tf1.setText("");
  27.                         tf2.setText("");
  28.                 }
  29.         }
  30.         
  31.     private JFrame fm;
  32.     private JLabel lb1, lb2;
  33.     private JTextField tf1, tf2;
  34.     private JButton btn1, btn2;
  35.     private JButton btnNewButton;
  36.     private JButton btnNewButton_1;
  37.     Main()
  38.     {
  39.         lb1=new JLabel("1坪=3.3058平方公尺",JLabel.CENTER);
  40.         lb1.setBounds(0, 10, 215, 30);
  41.         lb2=new JLabel("輸入坪數:");
  42.         lb2.setBounds(10, 40, 60, 40);
  43.         
  44.         tf1=new JTextField();
  45.         // keypress => 文字放上去後觸發
  46.         //
  47.         // keyrelease =>觸發後再將文字放上去
  48.         tf1.addKeyListener(new KeyAdapter() {
  49.                 @Override
  50.                 public void keyReleased(KeyEvent e) {
  51.                         int code = e.getKeyCode();
  52.                         if(code >= 97 && code <= 105)
  53.                         {
  54.                                 System.out.println(code);
  55.                         }
  56.                         else{
  57.                                 //先取得畫面上的文字內容
  58.                                 //刪除掉最後一個字
  59.                                 //刪除後的結果放到畫面上
  60.                                 int temp = tf1.getText().length();
  61.                                 try {
  62. //                                        char [] chr = tf1.getText().toCharArray();
  63. //                                        String ss ="";
  64. //                                        for(int i=0;i<chr.length-1;i++)
  65. //                                        {
  66. //                                                ss+=chr[i];
  67. //                                        }
  68.                                                 String str = tf1.getText(0, --temp);
  69.                                                 tf1.setText(str);
  70.                                         } catch (BadLocationException e1) {
  71.                                                 // TODO 自動產生的 catch 區塊
  72.                                                 e1.printStackTrace();
  73.                                         }
  74.                                
  75.                                
  76.                         }
  77.                 }
  78.         });
  79.         tf1.setBackground(Color.WHITE);
  80.         
  81.         tf1.setBounds(70, 45, 134, 30);
  82.         tf1.addActionListener(this);
  83.         
  84.         tf2=new JTextField();
  85.         tf2.setBounds(10, 85, 195, 40);
  86.         tf2.setEditable(false);
  87.         
  88.         
  89.         btn1=new JButton("確定");
  90.         btn1.setBounds(10, 135, 92, 25);
  91.         btn1.addActionListener(this);
  92.         btn2=new JButton("清除");
  93.         btn2.setBounds(112, 135, 92, 25);
  94.         btn2.addActionListener(this);
  95.         
  96.         fm=new JFrame("土地面積計算");
  97.         fm.setBounds(100, 100, 306, 306);
  98.         fm.setVisible(true);
  99.         fm.setResizable(false);
  100.         fm.getContentPane().setLayout(null);
  101.         fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  102.         fm.getContentPane().add(lb1);
  103.         fm.getContentPane().add(lb2);
  104.         fm.getContentPane().add(tf1);
  105.         fm.getContentPane().add(tf2);
  106.         fm.getContentPane().add(btn1);
  107.         fm.getContentPane().add(btn2);
  108.         
  109.       
  110.         
  111.       
  112.     }
  113. }
複製代碼

  1. package bbs.istak.org.tw;

  2. import java.awt.event.ActionEvent;
  3. import java.awt.event.ActionListener;
  4. import java.awt.event.KeyAdapter;
  5. import java.awt.event.KeyEvent;
  6. import java.awt.event.KeyListener;

  7. import javax.swing.JButton;
  8. import javax.swing.JFrame;
  9. import javax.swing.JLabel;
  10. import javax.swing.JTextField;
  11. import javax.swing.text.BadLocationException;



  12. public class actionTest implements ActionListener{

  13.         protected static final char[] code = null;
  14.                 public static void main(String[] args) {
  15.                 // TODO 自動產生的方法 Stub
  16.                 actionTest app = new actionTest();
  17.         }

  18.         @Override
  19.         public void actionPerformed(ActionEvent e) {
  20.                 // TODO 自動產生的方法 Stub
  21.                 if(e.getSource()==btn1)
  22.         {
  23.             tf2.setText("面積為: "+Double.parseDouble(tf1.getText())*3.3058+" 平方公尺");
  24.         }
  25.                 if(e.getSource()==btn2)
  26.                 {
  27.                         tf1.setText("");
  28.                         tf2.setText("");
  29.                 }
  30.         }
  31.         
  32.         private JFrame fm;
  33.     private JLabel lb1, lb2;
  34.     private JTextField tf1, tf2;
  35.     private JButton btn1, btn2;
  36.     actionTest()
  37.     {
  38.             lb1=new JLabel("1坪=3.3058平方公尺",JLabel.CENTER);
  39.         lb1.setBounds(0, 10, 215, 30);
  40.         lb2=new JLabel("輸入坪數:");
  41.         lb2.setBounds(10, 40, 60, 40);
  42.         
  43.         tf1=new JTextField();
  44.                 tf1.addKeyListener(new KeyAdapter(){
  45.                         public void KeyReleased (KeyEvent e){
  46.                                
  47.                                 if(e.getKeyCode()>=96 || e.getKeyCode()<=105)
  48.                                 {
  49.                                         System.out.println(code);
  50.                                 }
  51.                                 else{
  52.                                         int str = tf1.getText().length();
  53.                                         try {
  54.                                                 tf2.setText(tf1.getText(0, --str));
  55.                                                
  56.                                         }catch(BadLocationException e1){
  57.                                                 e1.printStackTrace();
  58.                                                
  59.                                         }
  60.                                        
  61.                                                

  62.                                                
  63.                                         }
  64.                                 }
  65.                                
  66.        
  67.                
  68.                
  69.                
  70.         });
  71.         
  72.         
  73.         tf1.setBounds(70, 45, 134, 30);
  74.         tf1.addActionListener(this);
  75.         tf2=new JTextField();
  76.         tf2.setBounds(10, 85, 195, 40);
  77.         tf2.setEditable(false);
  78.         
  79.         btn1=new JButton("確定");
  80.         btn1.setBounds(10, 135, 92, 25);
  81.         btn1.addActionListener(this);
  82.         btn2=new JButton("清除");
  83.         btn2.setBounds(112, 135, 92, 25);
  84.         btn2.addActionListener(this);
  85.         
  86.         fm=new JFrame("土地面積計算");
  87.         fm.setBounds(100, 100, 220, 200);
  88.         fm.setVisible(true);
  89.         fm.setResizable(false);
  90.         fm.setLayout(null);
  91.         fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  92.         fm.add(lb1);
  93.         fm.add(lb2);
  94.         fm.add(tf1);
  95.         fm.add(tf2);
  96.         fm.add(btn1);
  97.         fm.add(btn2);
  98.     }

  99. }
複製代碼

TOP

  1. import java.awt.event.ActionEvent;
  2. import java.awt.event.ActionListener;

  3. import javax.swing.JButton;
  4. import javax.swing.JFrame;
  5. import javax.swing.JLabel;
  6. import javax.swing.JTextField;
  7. import javax.swing.text.BadLocationException;

  8. import java.awt.Color;
  9. import java.awt.event.KeyAdapter;
  10. import java.awt.event.KeyEvent;

  11. public class Main implements ActionListener {
  12.         public static void main(String[] args) {
  13.                 Main app=new Main();
  14.         }

  15.         public void actionPerformed(ActionEvent e) {
  16.                  if(e.getSource()==btn1)
  17.                  {
  18.                          tf2.setText("面積為: "+Float.parseFloat(tf1.getText())*3.3058+"平方公尺");
  19.                  }
  20.                  if(e.getSource()==btn2)
  21.                  {
  22.                          tf1.setText("");
  23.                          tf2.setText("");
  24.                  }
  25.         }

  26.         public JFrame fm;
  27.         private JTextField tf1, tf2;
  28.         private JButton btn1, btn2;
  29.         private JLabel lb1, lb2;
  30.         Main() {
  31.                 fm = new JFrame("JTextField配置練習");
  32.                 tf1 = new JTextField();
  33.                 tf1.addKeyListener(new KeyAdapter() {
  34.                      public void keyReleased(KeyEvent e) {
  35.                                  int code=e.getKeyCode();
  36.                                if(code>96 && code<105)
  37.                                {
  38.                                        System.out.println(code);
  39.                                }
  40.                                else
  41.                                {
  42.                                        int temp=tf1.getText().length();
  43.                                        try {
  44.                                                                         String str=tf1.getText(0, --temp);
  45.                                                                         tf1.setText(str);
  46.                                                          } catch (BadLocationException e1) {
  47.                                                                         // TODO 自動產生的 catch 區塊
  48.                                                                         e1.printStackTrace();
  49.                                                          }
  50.                                }         
  51.                         }
  52.                 });
  53.                 tf1.setBackground(Color.WHITE);
  54.                 tf2 = new JTextField();
  55.                 tf2.setBackground(Color.WHITE);
  56.                 lb1 = new JLabel("1坪=3.3058平方公尺", JLabel.CENTER);
  57.                 lb2 = new JLabel("輸入坪數:");
  58.                 btn1 = new JButton("確定");
  59.                 btn2 = new JButton("清除");

  60.                 tf1.setBounds(70, 45, 134, 30);
  61.                 tf1.addActionListener(this);
  62.                 tf2.setBounds(10, 82, 195, 40);
  63.                 tf2.addActionListener(this);
  64.                 tf2.setEditable(false);

  65.                 lb1.setBounds(0, 10, 215, 30);
  66.                 lb2.setBounds(10, 40, 60, 40);

  67.                 btn1.setBounds(10, 135, 92, 25);
  68.                 btn1.addActionListener(this);
  69.                 btn2.setBounds(112, 135, 92, 25);
  70.                 btn2.addActionListener(this);
  71.                
  72.                 fm.setBounds(100, 100, 227, 206);
  73.                 fm.setVisible(true);
  74.                 fm.setResizable(true);
  75.                 fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  76.                 fm.getContentPane().setLayout(null);
  77.                 fm.getContentPane().add(tf1);
  78.                 fm.getContentPane().add(tf2);
  79.                 fm.getContentPane().add(lb1);
  80.                 fm.getContentPane().add(lb2);
  81.                 fm.getContentPane().add(btn1);
  82.                 fm.getContentPane().add(btn2);
  83.         }
  84. }
複製代碼

TOP

  1. package bbs.istak.org.tw;

  2. import java.awt.event.ActionEvent;
  3. import java.awt.event.ActionListener;
  4. import java.awt.event.KeyAdapter;
  5. import java.awt.event.KeyEvent;

  6. import javax.swing.JButton;
  7. import javax.swing.JFrame;
  8. import javax.swing.JLabel;
  9. import javax.swing.JTextField;
  10. import javax.swing.text.BadLocationException;



  11. public class Main implements ActionListener{

  12.         public static void main(String[] args) {
  13.                 // TODO 自動產生的方法 Stub
  14.                 Main app = new Main();
  15.         }
  16.         public void actionPerformed(ActionEvent e) {
  17.                     // TODO 自動產生的方法 Stub
  18.                 if(e.getSource() == btn1)
  19.                                 tf2.setText("面積為: "+Double.parseDouble(tf1.getText())*3.3058+" 平方公尺");
  20.        
  21.                         else if(e.getSource() == btn2)
  22.                         tf2.setText("   ");
  23.                
  24.             }
  25.      
  26.         
  27.         private JFrame fm;
  28.     private JLabel lb1, lb2;
  29.     private JTextField tf1, tf2;
  30.     private JButton btn1, btn2;
  31.     Main()
  32.     {
  33.         lb1=new JLabel("1坪=3.3058平方公尺",JLabel.CENTER);
  34.         lb1.setBounds(0, 10, 215, 30);
  35.         lb2=new JLabel("輸入坪數:");
  36.         lb2.setBounds(10, 40, 60, 40);
  37.         
  38.         tf1=new JTextField();
  39.         tf1.setBounds(70, 45, 134, 30);
  40.         tf1.addKeyListener(new KeyAdapter(){
  41.                 public void KeyReleased (KeyEvent e){
  42.                         if(e.getKeyCode()<96 && e.getKeyCode()>105){{
  43.                                     int str = tf1.getText().length();
  44.                                     try {
  45.                                                
  46.                                                 tf2.setText(tf1.getText(0, --str));
  47.                                         } catch (BadLocationException e1) {
  48.                                                 // TODO 自動產生的 catch 區塊
  49.                                                 e1.printStackTrace();
  50.                                         }
  51.                    
  52.                             }
  53.                            
  54.                     }
  55.                                 }

  56.         });
  57.    
  58.         tf2=new JTextField();
  59.         tf2.setBounds(10, 85, 195, 40);
  60.         tf2.setEditable(false);
  61.         
  62.         btn1=new JButton("確定");
  63.         btn1.setBounds(10, 135, 92, 25);
  64.         btn1.addActionListener(this);
  65.         btn2=new JButton("清除");
  66.         btn2.setBounds(112, 135, 92, 25);
  67.         btn2.addActionListener(this);
  68.         
  69.         fm=new JFrame("土地面積計算");
  70.         fm.setBounds(100, 100, 220, 200);
  71.         fm.setVisible(true);
  72.         fm.setResizable(false);
  73.         fm.setLayout(null);
  74.         fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  75.         fm.add(lb1);
  76.         fm.add(lb2);
  77.         fm.add(tf1);
  78.         fm.add(tf2);
  79.         fm.add(btn1);
  80.         fm.add(btn2);
  81.    
  82.     }
  83.        
  84. }
複製代碼

TOP

  1. import java.awt.event.ActionEvent;
  2. import java.awt.event.ActionListener;

  3. import javax.swing.*;
  4. import javax.swing.text.BadLocationException;

  5. import java.awt.event.KeyAdapter;
  6. import java.awt.event.KeyEvent;
  7. public class CALC implements ActionListener{

  8.         public static void main(String[] args)
  9.         {
  10.                 // TODO 自動產生的方法 Stub
  11.         CALC calc = new CALC();
  12.         }

  13.         @Override
  14.         public void actionPerformed(ActionEvent e)
  15.         {
  16.                 // TODO 自動產生的方法 Stub
  17.                 if(e.getSource()==bt1)
  18.                 {
  19.                         tf2.setText("面積為 "+Double.parseDouble(tf1.getText())*3.3058+" sqmeter.");
  20.                 }       
  21.                 if(e.getSource()==bt2)
  22.                 {
  23.                         tf1.setText("");
  24.                         tf2.setText("");
  25.                 }       
  26.                
  27.         }
  28.        
  29.         private JFrame fm;
  30.         private JLabel lb1;
  31.         private JLabel lb2;
  32.         private JTextField tf1;
  33.         private JTextField tf2;
  34.         private JButton bt1;
  35.     private JButton bt2;
  36.    
  37.     CALC()
  38.     {
  39.             fm=new JFrame("土地面積計算");
  40.         lb1=new JLabel("1坪=3.3058sqmeter");
  41.         lb2=new JLabel("輸入坪數:");
  42.         tf1=new JTextField();
  43.         tf1.addKeyListener(new KeyAdapter() {
  44.                 @Override
  45.                 public void keyReleased(KeyEvent arg0) {
  46.                         int kc=arg0.getKeyCode();  
  47.                                            
  48.                         if(kc==8 || 96<= kc && kc<=105 || kc==110)
  49.                         {
  50.                                 System.out.println("y");
  51.                         }       
  52.                         else
  53.                         {
  54.                                 int length = tf1.getText().length();
  55.                                 String str;
  56.                                         try
  57.                                         {
  58.                                                 System.out.println("n");
  59.                                                 str = tf1.getText(0, --length);
  60.                                                 tf1.setText(str);
  61.                                         }
  62.                                         catch (BadLocationException e)
  63.                                         {
  64.                                                 // TODO 自動產生的 catch 區塊
  65.                                                 e.printStackTrace();
  66.                                         }
  67.                                
  68.                                  
  69.                         }
  70.                 }
  71.         });
  72.      
  73.         tf2=new JTextField();
  74.         bt1=new JButton("確定");
  75.         bt2=new JButton("清除");
  76.         
  77.         lb1.setBounds(45, 10, 215, 30);
  78.         lb2.setBounds(10, 40, 60, 40);
  79.         
  80.         tf1.setBounds(70, 45, 125, 30);
  81.         tf2.setBounds(10, 85, 185, 40);
  82.         tf1.setEditable(true);
  83.         tf2.setEditable(false);
  84.         tf1.addActionListener(this);
  85.         tf2.addActionListener(this);
  86.         
  87.         bt1.setBounds(10, 135, 92, 25);
  88.         bt2.setBounds(105, 135, 92, 25);
  89.         bt1.addActionListener(this);
  90.         bt2.addActionListener(this);
  91.         
  92.         fm.setBounds(100, 100, 220, 200);
  93.         fm.setVisible(true);
  94.         fm.setResizable(true);
  95.         fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  96.         fm.getContentPane().setLayout(null);
  97.         fm.getContentPane().add(tf1);
  98.         fm.getContentPane().add(tf2);
  99.         fm.getContentPane().add(lb1);
  100.         fm.getContentPane().add(lb2);         
  101.         fm.getContentPane().add(bt1);
  102.         fm.getContentPane().add(bt2);
  103.         }

  104. }
複製代碼

TOP

  1. package bbs.istak.org.tw;

  2. import java.awt.event.ActionEvent;
  3. import java.awt.event.ActionListener;

  4. import javax.swing.JButton;
  5. import javax.swing.JFrame;
  6. import javax.swing.JLabel;
  7. import javax.swing.JTextField;
  8. import javax.swing.text.BadLocationException;

  9. import java.awt.event.KeyAdapter;
  10. import java.awt.event.KeyEvent;



  11. public class Main implements ActionListener{

  12.         public static void main(String[] args) {
  13.                 // TODO 自動產生的方法 Stub
  14.                 Main app = new Main();
  15.         }

  16.         @Override
  17.         public void actionPerformed(ActionEvent e) {
  18.                 // TODO 自動產生的方法 Stub
  19.                 if(e.getSource()==btn1)
  20.         {
  21.             tf2.setText("面積為: "+Double.parseDouble(tf1.getText())*3.3058+" 平方公尺");
  22.         }
  23.                 if(e.getSource()==btn2)
  24.                 {
  25.                         tf1.setText("");
  26.                         tf2.setText("");
  27.                 }
  28.         }
  29.         
  30.         private JFrame fm;
  31.     private JLabel lb1, lb2;
  32.     private JTextField tf1, tf2;
  33.     private JButton btn1, btn2;
  34.     Main()
  35.     {
  36.             lb1=new JLabel("1坪=3.3058平方公尺",JLabel.CENTER);
  37.         lb1.setBounds(0, 10, 215, 30);
  38.         lb2=new JLabel("輸入坪數:");
  39.         lb2.setBounds(10, 40, 60, 40);
  40.         
  41.         tf1=new JTextField();
  42.         tf1.addKeyListener(new KeyAdapter() {
  43.                 @Override
  44.                 public void keyReleased(KeyEvent e) {
  45.                         if(e.getKeyCode()<96 || e.getKeyCode()>105)
  46.                         {
  47.                                 int temp = tf1.getText().length();
  48.                                 try {
  49.                                                 String str = tf1.getText(0, --temp);
  50.                                                 tf1.setText(str);
  51.                                         } catch (BadLocationException e1) {
  52.                                                 // TODO 自動產生的 catch 區塊
  53.                                                 e1.printStackTrace();
  54.                                         }
  55.                                
  56.                         }
  57.                 }
  58.         });
  59.         
  60.         tf1.setBounds(70, 45, 134, 30);
  61.         tf1.addActionListener(this);
  62.         tf2=new JTextField();
  63.         tf2.setBounds(10, 85, 195, 40);
  64.         tf2.setEditable(false);
  65.         
  66.         btn1=new JButton("確定");
  67.         btn1.setBounds(10, 135, 92, 25);
  68.         btn1.addActionListener(this);
  69.         btn2=new JButton("清除");
  70.         btn2.setBounds(112, 135, 92, 25);
  71.         btn2.addActionListener(this);
  72.         
  73.         fm=new JFrame("土地面積計算");
  74.         fm.setBounds(100, 100, 220, 200);
  75.         fm.setVisible(true);
  76.         fm.setResizable(false);
  77.         fm.getContentPane().setLayout(null);
  78.         fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  79.         fm.getContentPane().add(lb1);
  80.         fm.getContentPane().add(lb2);
  81.         fm.getContentPane().add(tf1);
  82.         fm.getContentPane().add(tf2);
  83.         fm.getContentPane().add(btn1);
  84.         fm.getContentPane().add(btn2);
  85.     }

  86. }
複製代碼

TOP

返回列表