Board logo

標題: 事件處理與傾聽者 [打印本頁]

作者: tonyh    時間: 2021-8-6 20:13     標題: 事件處理與傾聽者

視窗作業系統都是採取圖形使用者介面,其程式執行流程是採用事件驅動(Event Driver)方式運作。例如程式開始執行後,等待著事件的發生,如移動滑鼠到按鈕上點按一下,就可能會執行特定方法。

Java對於事件處理方式是採用「委派事件模式」,如下圖所示:



Java將產生事件的物件稱為「事件來源」,而接收事件的物件稱為「事件傾聽者」,處理事件的方法稱為「事件處理方法」。

以本範例為例,事件來源有 tf1、btn1、btn2 三個物件,這三個物件必須分別與事件傾聽者連結在一起(即為來源物件註冊傾聽者),當事件產生時,會將來源物件以傳遞參數的方式交給事件處理方法運作。

事件處理的傾聽者介面 ActionListener 由 java.awt.event 套件所提供,使用時要先匯入。

  1. import javax.swing.JFrame;
  2. import javax.swing.JLabel;
  3. import javax.swing.JTextField;
  4. import javax.swing.JButton;
  5. import java.awt.event.ActionListener;
  6. import java.awt.event.ActionEvent;
  7. public class Ch82 implements ActionListener
  8. {
  9.        
  10.         private JFrame fm;
  11.         private JLabel lb1, lb2;
  12.         private JTextField tf1, tf2;
  13.         private JButton btn1, btn2;
  14.        
  15.         Ch82()
  16.         {
  17.                 lb1=new JLabel("1坪=3.3058平方公尺",JLabel.CENTER);
  18.                 lb1.setBounds(0, 10, 215, 30);
  19.                 lb2=new JLabel("輸入坪數:");
  20.                 lb2.setBounds(10, 40, 60, 40);
  21.                
  22.                 tf1=new JTextField();
  23.                 tf1.setBounds(70, 45, 134, 30);
  24.                 tf1.addActionListener(this);
  25.                 tf2=new JTextField();
  26.                 tf2.setBounds(10, 85, 195, 40);
  27.                 tf2.setEditable(false);
  28.                
  29.                 btn1=new JButton("確定");
  30.                 btn1.setBounds(10, 135, 92, 25);
  31.                 btn1.addActionListener(this);
  32.                 btn2=new JButton("清除");
  33.                 btn2.setBounds(112, 135, 92, 25);
  34.                 btn2.addActionListener(this);
  35.                
  36.                 fm=new JFrame("土地面積計算");
  37.                 fm.setBounds(100, 100, 220, 200);
  38.                 fm.setVisible(true);
  39.                 fm.setResizable(false);
  40.                 fm.setLayout(null);
  41.                 fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  42.                 fm.add(lb1);
  43.                 fm.add(lb2);
  44.                 fm.add(tf1);
  45.                 fm.add(tf2);
  46.                 fm.add(btn1);
  47.                 fm.add(btn2);
  48.         }
  49.        
  50.         public void actionPerformed(ActionEvent e)
  51.         {
  52.                 if(e.getSource()==tf1 || e.getSource()==btn1)
  53.                 {
  54.                         double area=Double.parseDouble(tf1.getText())*3.3058;
  55.                         String areaStr=String.valueOf(area);
  56.                         //String areaStr=Double.toString(area);
  57.                         tf2.setText("面積為: "+areaStr+" 平方公尺");
  58.                 }       
  59.                 if(e.getSource()==btn2)
  60.                 {
  61.                         tf1.setText("");
  62.                         tf2.setText("");
  63.                 }
  64.         }

  65.         public static void main(String[] args) {
  66.                 Ch82 app=new Ch82();
  67.         }

  68. }
複製代碼

作者: 陳宥穎    時間: 2021-8-6 20:44

  1. import java.awt.event.ActionEvent;
  2. import java.awt.event.ActionListener;
  3. import javax.swing.*;
  4. public class Ch100 implements ActionListener {
  5.         private JFrame fram1;
  6.         private JLabel lb1, lb2;
  7.         private JTextField tf1, tf2;
  8.         private JButton bt1, bt2;
  9.         Ch100()
  10.         {




  11.                 bt1=new JButton("確定");
  12.                 bt1.setBounds(10, 135, 92, 25);
  13.                 bt1.addActionListener(this);


  14.                 bt2=new JButton("清除");
  15.                 bt2.setBounds(112, 135, 92, 25);
  16.                 bt2.addActionListener(this);


  17.                 lb1=new JLabel("1坪=3.3058平方公尺");            
  18.                 lb1.setBounds(0, 10, 215, 30);


  19.                 lb2=new JLabel("輸入坪數");            
  20.                 lb2.setBounds(10, 40, 60, 40);

  21.                 tf1=new JTextField();
  22.                 tf1.setBounds(70, 45, 134, 30);
  23.                 tf1.addActionListener(this);

  24.                 tf2=new JTextField();
  25.                 tf2.setBounds(10, 85, 195, 40);
  26.                 tf2.setEditable(false);


  27.                 fram1=new JFrame("土地面積計算");
  28.                 fram1.add(bt1);
  29.                 fram1.add(bt2);
  30.                 fram1.add(lb1);
  31.                 fram1.add(lb2);
  32.                 fram1.add(tf1);
  33.                 fram1.add(tf2);               
  34.                 fram1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  35.                 fram1.setLayout(null);
  36.                 fram1.setBounds(100, 100, 220, 200);
  37.                 fram1.setVisible(true);


  38.         }
  39.         public static void main(String[] args) {
  40.                 Ch100 haha=new Ch100();

  41.         }
  42.         @Override
  43.         public void actionPerformed(ActionEvent e) {
  44.                 if(e.getSource()==bt1 || e.getSource()==tf1)
  45.                 {
  46.                         double x=Double.parseDouble(tf1.getText())*3.3058;
  47.                         tf2.setText("面積為"+x+"平方公尺");
  48.                 }
  49.                 if(e.getSource()==bt2)
  50.                 {
  51.                         tf1.setText("");
  52.                         tf2.setText("");
  53.                 }
  54.         }
  55. }
複製代碼

作者: 林政瑜    時間: 2021-8-6 20:46

  1. import javax.swing.JFrame;
  2. import javax.swing.JLabel;
  3. import javax.swing.JTextField;

  4. import java.awt.event.ActionEvent;
  5. import java.awt.event.ActionListener;
  6. import javax.swing.JButton;

  7. public class Ch02 implements ActionListener{
  8.         
  9.         private JFrame fm;
  10.         private JLabel lb1, lb2;
  11.         private JTextField tf1, tf2;
  12.         private JButton btn1, btn2;
  13.         
  14.         Ch02()
  15.         {           
  16.             tf1=new JTextField();
  17.             tf1.setBounds(70, 45, 134, 30);
  18.             tf1.addActionListener(this);
  19.             tf2=new JTextField();
  20.             tf2.setBounds(10, 85, 195, 40);
  21.             tf2.setEditable(false);
  22.            
  23.             btn1=new JButton("確定");
  24.             btn1.setBounds(10, 135, 92, 25);
  25.             btn1.addActionListener(this);
  26.             btn2=new JButton("清除");
  27.             btn2.setBounds(112, 135, 92, 25);
  28.             btn2.addActionListener(this);
  29.            
  30.             fm=new JFrame("土地面積計算");
  31.             fm.setBounds(100, 100, 220, 200);
  32.             fm.setVisible(true);
  33.             fm.setResizable(false);
  34.             fm.setLayout(null);
  35.                 lb1=new JLabel("1坪=3.3058平方公尺",JLabel.CENTER);
  36.             lb1.setBounds(0, 10, 215, 30);
  37.             lb2=new JLabel("輸入坪數:");
  38.             lb2.setBounds(10, 40, 60, 40);
  39.             
  40.             fm.add(lb1);
  41.             fm.add(lb2);
  42.             fm.add(tf1);
  43.             fm.add(tf2);
  44.             fm.add(btn1);
  45.             fm.add(btn2);
  46.         }

  47.         public static void main(String[] args) {
  48.                 Ch02 app=new Ch02();
  49.         }

  50.                 public void actionPerformed(ActionEvent e) {
  51.                         if(e.getSource()==tf1 || e.getSource()==btn1) {
  52.                                 double ans=Double.parseDouble(tf1.getText())*3.3058;
  53.                                 tf2.setText("面積為:"+ans+"平方公尺");
  54.                         }
  55.                         if(e.getSource()==btn2) {
  56.                                 tf1.setText("");       
  57.                                 tf2.setText("");       
  58.                         }
  59.                        
  60.                 }

  61. }
複製代碼

作者: 沈子晏    時間: 2021-8-6 20:46

  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. public class Ch006  implements ActionListener{
  8.         JFrame fm;
  9.         JTextField tf1, tf2;
  10.         JLabel lb1, lb2;
  11.         JButton btn1, btn2;

  12.         Ch006() //建構子
  13.         {
  14.                 tf1=new JTextField();
  15.                 tf2=new JTextField();
  16.                 lb1=new JLabel("1坪=3.3085平方公尺", JLabel.CENTER);
  17.                 lb2=new JLabel("輸入坪數:");
  18.                 fm=new JFrame("土地面積換算");
  19.                 btn1=new JButton("確定");
  20.                 btn2=new JButton("清除");


  21.                 tf1.setBounds(70, 45, 134, 30);
  22.                 tf1.addActionListener(this);
  23.                 tf2.setBounds(10, 85, 195, 40);
  24.                 tf2.setEnabled(false);

  25.                 lb1.setBounds(0, 10, 215, 30);
  26.                 lb2.setBounds(10, 40, 60, 40);

  27.                 btn1.setBounds(10, 135, 92, 25);
  28.                 btn1.addActionListener(this);
  29.                 btn2.setBounds(112, 135, 92, 25);
  30.                 btn2.addActionListener(this);

  31.                 fm.setBounds(100, 100, 220, 200);
  32.                 fm.setVisible(true);
  33.                 fm.setResizable(false);
  34.                 fm.setLayout(null);
  35.                 fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  36.                 fm.add(lb1);
  37.                 fm.add(lb2);
  38.                 fm.add(tf1);
  39.                 fm.add(tf2);
  40.                 fm.add(btn1);
  41.                 fm.add(btn2);


  42.         }

  43.         public static void main(String[] args) {
  44.                 Ch006 app=new Ch006();  //物件導向化(匿名物件)
  45.         }

  46.         @Override
  47.         public void actionPerformed(ActionEvent e) {
  48.                 if(e.getSource()==tf1 || e.getSource()==btn1)
  49.                 {
  50.                         double res=Double.parseDouble(tf1.getText())*3.3058;
  51.                         tf2.setText("面積為: "+res+" 平方公尺");
  52.                 }
  53.                 if(e.getSource()==btn2)
  54.                 {
  55.                         tf1.setText("");
  56.                         tf2.setText("");
  57.                 }
  58.         }

  59. }
複製代碼

作者: 孫嘉駿    時間: 2021-8-6 20:46

  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. public class Ch11 implements ActionListener{
  8.         JFrame fm;
  9.         JLabel lb1, lb2;
  10.         JTextField tf1, tf2;
  11.         JButton btn1, btn2;
  12.        
  13.         Ch11(){
  14.                 lb1=new JLabel("1坪=3.3058平方公尺", JLabel.CENTER);
  15.             lb1.setBounds(0, 10, 215, 30);
  16.             lb2=new JLabel("輸入坪數: ");
  17.             lb2.setBounds(10, 40, 60, 40);
  18.             
  19.             tf1=new JTextField();
  20.             tf1.setBounds(70, 45, 134, 30);
  21.             tf1.addActionListener(this);
  22.             tf2=new JTextField();
  23.             tf2.setEditable(false);
  24.             tf2.setBounds(10, 85, 195, 40);
  25.             
  26.             btn1=new JButton("確定");
  27.             btn1.setBounds(10, 135, 92, 25);
  28.             btn1.addActionListener(this);
  29.             btn2=new JButton("清除");
  30.             btn2.setBounds(112, 135, 92, 25);
  31.             btn2.addActionListener(this);
  32.                
  33.                 fm=new JFrame("土地面積換算");
  34.                 fm.setBounds(100, 100, 220, 220);
  35.                 fm.setVisible(true);
  36.                 fm.setResizable(false);
  37.                 fm.setLayout(null);
  38.                 fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  39.                 fm.add(lb1);
  40.                 fm.add(lb2);
  41.                 fm.add(tf1);
  42.                 fm.add(tf2);
  43.                 fm.add(btn1);
  44.                 fm.add(btn2);
  45.                 fm.add(fm);
  46.         }
  47.         public static void main(String[] args) {
  48.                 new Ch11();
  49.         }
  50.         public void actionPerformed(ActionEvent e)
  51.     {
  52.             if(e.getSource()==tf1 || e.getSource()==btn1)
  53.             {
  54.                     double area=Double.parseDouble(tf1.getText())*3.3058;
  55.                     String areaStr=String.valueOf(area);
  56.                     tf2.setText("面積為: "+areaStr+" 平方公尺");
  57.             }      
  58.             if(e.getSource()==btn2)
  59.             {
  60.                     tf1.setText("");
  61.                     tf2.setText("");
  62.             }
  63.     }
  64. }
複製代碼

作者: 黃宥華    時間: 2021-8-6 20:51

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

  3. import javax.swing.JFrame;
  4. import javax.swing.JLabel;
  5. import javax.swing.JTextField;
  6. import javax.swing.JButton;
  7. public class Ch13 implements ActionListener{
  8.         
  9.         JFrame fm;
  10.         JLabel lb1, lb2;
  11.         JTextField tf1, tf2;
  12.         JButton btn1, btn2;
  13.         
  14.         Ch13()
  15.         {
  16.                 lb1=new JLabel("1坪=3.3058平方公尺",JLabel.CENTER);
  17.                 lb1.setBounds(0, 10, 215, 30);
  18.                 lb2=new JLabel("輸入坪數:");
  19.                 lb2.setBounds(10, 40, 60, 40);
  20.                
  21.                 tf1=new JTextField();
  22.                 tf1.setBounds(70, 45, 134, 30);
  23.                 tf1.addActionListener(this);
  24.                 tf2=new JTextField();
  25.                 tf2.setBounds(10, 85, 195, 40);
  26.                 tf2.setEditable(false);
  27.                
  28.                 btn1=new JButton("確定");
  29.                 btn1.setBounds(10, 135, 92, 25);
  30.                 btn1.addActionListener(this);
  31.                 btn2=new JButton("清除");
  32.                 btn2.setBounds(112, 135, 92, 25);
  33.                 btn2.addActionListener(this);
  34.                
  35.                 fm=new JFrame("土地面積計算");
  36.                 fm.setBounds(100, 100, 220, 200);
  37.                 fm.setVisible(true);
  38.                 fm.setResizable(false);
  39.                 fm.setLayout(null);
  40.                 fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  41.                 fm.add(lb1);
  42.                 fm.add(lb2);
  43.                 fm.add(tf1);
  44.                 fm.add(tf2);
  45.                 fm.add(btn1);
  46.                 fm.add(btn2);
  47.         }

  48.         public static void main(String[] args) {
  49.                 Ch13 app=new Ch13();
  50.         }

  51.                 @Override
  52.                 public void actionPerformed(ActionEvent e) {
  53.                         if(e.getSource()==tf1 || e.getSource()==btn1)
  54.             {
  55.                     double pig=Double.parseDouble(tf1.getText())*3.3058;
  56.                     tf2.setText("面積為: "+pig+" 平方公尺");
  57.             }      
  58.             if(e.getSource()==btn2)
  59.             {
  60.                     tf1.setText("");
  61.                     tf2.setText("");
  62.             }
  63.                        
  64.                 }

  65. }
複製代碼

作者: 李宇澤    時間: 2021-8-6 20:54

  1. import javax.swing.JFrame;
  2. import javax.swing.JLabel;
  3. import javax.swing.JTextField;
  4. import javax.swing.JButton;
  5. import java.awt.event.ActionListener;
  6. import java.awt.event.ActionEvent;
  7. public class Ch69 implements ActionListener
  8. {
  9.       
  10.         private JFrame fm;
  11.         private JLabel lb1, lb2;
  12.         private JTextField tf1, tf2;
  13.         private JButton btn1, btn2;
  14.       
  15.         Ch69()
  16.         {
  17.                 lb1=new JLabel("1坪=3.3058平方公尺",JLabel.CENTER);
  18.                 lb1.setBounds(0, 10, 215, 30);
  19.                 lb2=new JLabel("輸入坪數:");
  20.                 lb2.setBounds(10, 40, 60, 40);
  21.                
  22.                 tf1=new JTextField();
  23.                 tf1.setBounds(70, 45, 134, 30);
  24.                 tf1.addActionListener(this);
  25.                 tf2=new JTextField();
  26.                 tf2.setBounds(10, 85, 195, 40);
  27.                 tf2.setEditable(false);
  28.                
  29.                 btn1=new JButton("確定");
  30.                 btn1.setBounds(10, 135, 92, 25);
  31.                 btn1.addActionListener(this);
  32.                 btn2=new JButton("清除");
  33.                 btn2.setBounds(112, 135, 92, 25);
  34.                 btn2.addActionListener(this);
  35.                
  36.                 fm=new JFrame("土地面積計算");
  37.                 fm.setBounds(100, 100, 220, 200);
  38.                 fm.setVisible(true);
  39.                 fm.setResizable(false);
  40.                 fm.setLayout(null);
  41.                 fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  42.                 fm.add(lb1);
  43.                 fm.add(lb2);
  44.                 fm.add(tf1);
  45.                 fm.add(tf2);
  46.                 fm.add(btn1);
  47.                 fm.add(btn2);
  48.         }
  49.       
  50.         public void actionPerformed(ActionEvent e)
  51.         {
  52.                 if(e.getSource()==tf1 || e.getSource()==btn1)
  53.                 {
  54.                         double area=Double.parseDouble(tf1.getText())*3.3058;
  55.                         String areaStr=String.valueOf(area);
  56.                         //String areaStr=Double.toString(area);
  57.                         tf2.setText("面積為: "+areaStr+" 平方公尺");
  58.                 }      
  59.                 if(e.getSource()==btn2)
  60.                 {
  61.                         tf1.setText("");
  62.                         tf2.setText("");
  63.                 }
  64.         }

  65.         public static void main(String[] args) {
  66.                 Ch69 app=new Ch69();
  67.         }

  68. }
複製代碼

作者: 蔡忻霓    時間: 2021-8-6 20:54

  1. import javax.swing.JFrame;
  2. import javax.swing.JLabel;
  3. import javax.swing.JTextField;
  4. import javax.swing.JButton;
  5. import java.awt.event.ActionListener;
  6. import java.awt.event.ActionEvent;
  7. public class JPA03 implements ActionListener
  8. {
  9.         private JFrame fm;
  10.         private JLabel lb1, lb2;
  11.         private JTextField tf1, tf2;
  12.         private JButton btn1, btn2;
  13.       
  14.         JPA03()
  15.         {
  16.                 lb1=new JLabel("1坪=3.3058平方公尺",JLabel.CENTER);
  17.                 lb1.setBounds(0, 10, 215, 30);
  18.                 lb2=new JLabel("輸入坪數:");
  19.                 lb2.setBounds(10, 40, 60, 40);
  20.                
  21.                 tf1=new JTextField();
  22.                 tf1.setBounds(70, 45, 134, 30);
  23.                 tf1.addActionListener(this);
  24.                 tf2=new JTextField();
  25.                 tf2.setBounds(10, 85, 195, 40);
  26.                 tf2.setEditable(false);
  27.                
  28.                 btn1=new JButton("確定");
  29.                 btn1.setBounds(10, 135, 92, 25);
  30.                 btn1.addActionListener(this);
  31.                 btn2=new JButton("清除");
  32.                 btn2.setBounds(112, 135, 92, 25);
  33.                 btn2.addActionListener(this);
  34.                
  35.                 fm=new JFrame("土地面積計算");
  36.                 fm.setBounds(100, 100, 220, 200);
  37.                 fm.setVisible(true);
  38.                 fm.setResizable(false);
  39.                 fm.setLayout(null);
  40.                 fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  41.                 fm.add(lb1);
  42.                 fm.add(lb2);
  43.                 fm.add(tf1);
  44.                 fm.add(tf2);
  45.                 fm.add(btn1);
  46.                 fm.add(btn2);
  47.         }
  48.       
  49.         public void actionPerformed(ActionEvent e)
  50.         {
  51.                 if(e.getSource()==tf1 || e.getSource()==btn1)
  52.                 {
  53.                         double area=Double.parseDouble(tf1.getText())*3.3058;
  54.                         String areaStr=String.valueOf(area);
  55.                         tf2.setText("面積為: "+areaStr+" 平方公尺");
  56.                 }      
  57.                 if(e.getSource()==btn2)
  58.                 {
  59.                         tf1.setText("");
  60.                         tf2.setText("");
  61.                 }
  62.         }

  63.         public static void main(String[] args) {
  64.                 JPA03 app=new JPA03();
  65.         }
  66. }
複製代碼

作者: 董宸佑    時間: 2021-8-6 20:57

  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. public class Ch01 implements ActionListener{
  8.        
  9.         private JFrame fm=new JFrame("土筆面積換算");
  10.         private JLabel lb1=new JLabel("1坪=3.3058平方公尺", JLabel.CENTER);
  11.         private JLabel lb2=new JLabel("輸入坪數:");
  12.         private JTextField tf1=new JTextField();
  13.         private JTextField tf2=new JTextField();
  14.         private JButton btn1=new JButton("確定");
  15.         private JButton btn2=new JButton("清除");
  16.        
  17.         Ch01(){
  18.                
  19.                 lb1.setBounds(0, 10, 215, 30);
  20.                 lb2.setBounds(10, 40, 60, 40);
  21.                
  22.                 tf1.setBounds(70, 45, 134, 30);
  23.                 tf1.addActionListener(this);
  24.                 tf2.setBounds(10, 85, 195, 40);
  25.                 tf2.setEditable(false);
  26.                
  27.                 btn1.setBounds(10, 135, 92, 25);
  28.                 btn1.addActionListener(this);
  29.                 btn2.setBounds(112, 135, 92, 25);
  30.                 btn2.addActionListener(this);
  31.                
  32.                 fm.setBounds(100, 100, 220, 200);
  33.                 fm.setVisible(true);
  34.                 fm.setResizable(false);
  35.                 fm.setLayout(null);
  36.                 fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  37.                 fm.add(btn1);
  38.                 fm.add(btn2);
  39.                 fm.add(tf1);
  40.                 fm.add(tf2);
  41.                 fm.add(lb1);
  42.                 fm.add(lb2);
  43.                
  44.         }
  45.         @Override
  46.         public void actionPerformed(ActionEvent e) {
  47.                 if(e.getSource()==tf1 || e.getSource()==btn1){
  48.                         double area=Double.parseDouble(tf1.getText())*3.3058;
  49.                         String areaStr=String.valueOf(area);
  50.                         tf2.setText("面積為: "+areaStr+"平方公尺");
  51.                 }
  52.                 if(e.getSource()==btn2){
  53.                         tf1.setText("");
  54.                         tf2.setText("");
  55.                 }
  56.         }
  57.         public static void main(String[] args) {
  58.                 new Ch01();
  59.         }
  60. }
複製代碼

作者: 劉愷鈞    時間: 2021-8-6 20:58

  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. public class Ch01 implements ActionListener {
  8.        
  9.         JFrame fm;
  10.         JLabel lb1,lb2;
  11.         JTextField tf1,tf2;
  12.         JButton btn1,btn2;
  13.        
  14.         Ch01()
  15.         {
  16.                 lb1=new JLabel("1坪=3.358平方公尺",JLabel.CENTER);
  17.                 lb1.setBounds(0, 10, 215, 30);
  18.                 lb1.setVisible(true);
  19.                
  20.                 lb2=new JLabel("輸入坪數:");
  21.                 lb2.setBounds(10, 40, 60, 40);
  22.                 lb2.setVisible(true);
  23.                
  24.                 tf1=new JTextField();
  25.                 tf1.setBounds(70, 45, 134, 30);
  26.                 tf1.setVisible(true);
  27.                 tf1.addActionListener(this);
  28.                
  29.                 tf2=new JTextField();
  30.                 tf2.setBounds(10, 85, 195, 40);
  31.                 tf2.setEditable(true);
  32.                 tf2.setVisible(true);
  33.                 tf2.addActionListener(this);
  34.                
  35.                 btn1=new JButton("確定");
  36.                 btn1.setBounds(10, 135, 92, 25);
  37.                 btn1.setVisible(true);
  38.                 btn1.addActionListener(this);
  39.                
  40.                 btn2=new JButton("清除");
  41.                 btn2.setBounds(112, 135, 92, 25);
  42.                 btn2.setVisible(true);
  43.                 btn2.addActionListener(this);
  44.                
  45.                 fm=new JFrame("土地面積計算");
  46.                 fm.setBounds(100,100,233,233);
  47.                 fm.setVisible(true);
  48.                 fm.setResizable(false);
  49.                 fm.setLayout(null);
  50.                 fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  51.                 fm.add(btn1);
  52.                 fm.add(btn2);
  53.                 fm.add(lb1);
  54.                 fm.add(lb2);
  55.                 fm.add(tf1);
  56.                 fm.add(tf2);
  57.                
  58.         }
  59.         public static void main(String args[])
  60.         {
  61.                 new Ch01();
  62.         }
  63.         public void actionPerformed(ActionEvent e) {
  64.                 if(e.getSource()==tf1 || e.getSource()==btn1)
  65.                 {
  66.                         double result=Double.parseDouble(tf1.getText())*3.3058;
  67.                     tf2.setText("面積為:"+result+"平方公尺");
  68.                 }
  69.                 if(e.getSource()==btn2)
  70.                 {
  71.                         tf1.setText("");
  72.                         tf2.setText("");
  73.                 }
  74.         }
  75. }
複製代碼





歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/) Powered by Discuz! 7.2