3 1 1 import javax swing Swing import

  • Slides: 49
Download presentation

範例 3 -1 (1) import javax. swing. *; //引用Swing套件 import java. awt. *; import

範例 3 -1 (1) import javax. swing. *; //引用Swing套件 import java. awt. *; import java. awt. event. *; //引用處理事件的event套件 public class Inner. EX extends JFrame{ JButton click. ME = new JButton("請按我!"); //建立元件 JLabel label = new JLabel("按鈕未被按下"); int click. Count = 0; //按鈕被按下的次數 class al. Click. ME implements Action. Listener { public void action. Performed(Action. Event e){ click. Count ++; //增加按鈕被按下次數 //取得發出事件之元件的動作命令字串, 並設定標籤的內容 label. set. Text("[" + e. get. Action. Command() + "] 按鈕被按了" + click. Count + "次"); } }

範例 3 -1 (2) Inner. EX(){ Container cp = get. Content. Pane(); //取得內容面版 cp.

範例 3 -1 (2) Inner. EX(){ Container cp = get. Content. Pane(); //取得內容面版 cp. add(click. ME, Border. Layout. CENTER); //將元件加入面版 cp. add(label, Border. Layout. SOUTH); al. Click. ME al = new al. Click. ME(); //宣告監聽器類別物件 click. ME. add. Action. Listener(al); //註冊由al監聽click. ME元件的Action. Event事件 set. Default. Close. Operation(JFrame. EXIT_ON_CLOSE); pack(); set. Visible(true); } public static void main(String args[]) { new Inner. EX(); //產生視窗框架物件 } }

範例 3 -2 (1) import javax. swing. *; //引用Swing套件 import java. awt. *; import

範例 3 -2 (1) import javax. swing. *; //引用Swing套件 import java. awt. *; import java. awt. event. *; //引用處理事件的event套件 public class Anonymous. EX extends JFrame{ JButton click. ME = new JButton("請按我!"); //建立元件 JLabel label = new JLabel("按鈕未被按下"); int click. Count = 0; //按鈕被按下的次數 //宣告並定義回應Action. Event事件的匿名內部類別 Action. Listener al = new Action. Listener() { public void action. Performed(Action. Event e){ click. Count ++; //增加按鈕被按下次數 //取得發出事件之元件的動作命令字串, 並設定標籤的內容 label. set. Text("[" + e. get. Action. Command() + "] 按鈕被按了" + click. Count + "次"); } }; //請注意結尾的分號

範例 3 -2 (2) Anonymous. EX(){ Container cp = get. Content. Pane(); //取得內容面版 cp.

範例 3 -2 (2) Anonymous. EX(){ Container cp = get. Content. Pane(); //取得內容面版 cp. add(click. ME, Border. Layout. CENTER); //將元件加入面版 cp. add(label, Border. Layout. SOUTH); click. ME. add. Action. Listener(al); //註冊由al監聽click. ME元件的Action. Event事件 set. Default. Close. Operation(JFrame. EXIT_ON_CLOSE); pack(); set. Visible(true); } public static void main(String args[]) { new Anonymous. EX(); //產生視窗框架物件 } }

EX 3 -3 (1) import javax. swing. *; //引用Swing套件 import java. awt. *; import

EX 3 -3 (1) import javax. swing. *; //引用Swing套件 import java. awt. *; import java. awt. event. *; //引用處理事件的event套件 public class Action. EX extends JFrame { class Button. Listener extends JButton //繼承JButton類別 implements Action. Listener { //實作Action. Listener介面的監聽器類別 Button. Listener(String name) { super(name); add. Action. Listener(this); //將事件委任給自己監聽 } public void action. Performed(Action. Event e){ click. Count ++; //增加按鈕被按下次數 //取得發出事件之元件的動作命令字串, 並設定標籤的內容 label. set. Text("[" + e. get. Action. Command() + "] 按鈕被按了" + click. Count + "次"); } }

EX 3 -3 (2) Button. Listener click. ME = new Button. Listener("請按我!"); //建立元件 JLabel

EX 3 -3 (2) Button. Listener click. ME = new Button. Listener("請按我!"); //建立元件 JLabel label = new JLabel("按鈕未被按下"); int click. Count = 0; //按鈕被按下的次數 Action. EX(){ Container cp = get. Content. Pane(); //取得內容面版 cp. add(click. ME, Border. Layout. CENTER); //將元件加入面 版 cp. add(label, Border. Layout. SOUTH); set. Default. Close. Operation(JFrame. EXIT_ON_CLOSE); set. Size(150, 90); set. Visible(true); } public static void main(String args[]) { new Action. EX(); //產生視窗框架物件 } }

Ex 3 -4 (1) import javax. swing. *; //引用Swing套件 import java. awt. *; import

Ex 3 -4 (1) import javax. swing. *; //引用Swing套件 import java. awt. *; import java. awt. event. *; //引用處理事件的event套件 public class Mouse. EX extends JFrame { JButton click. ME = new JButton("請按我!"); //建立元件 JLabel lb. Mouse = new JLabel("滑鼠事件訊息"), //建立顯示訊息的標籤 lb. Mouse. Button = new JLabel("按下按鍵"); //以匿名類別的方式實作Mouse. Listener介面, //宣告回應滑鼠事件的監聽器 Mouse. Listener ml. Btn = new Mouse. Listener() { private int click. Count = 0, //記錄按鈕被按下次數的屬性 double. Click. Count = 0; //記錄按鈕被按下次數的屬性 //處理按一下滑鼠按鍵動作的方法 public void mouse. Clicked(Mouse. Event e) { if(e. get. Click. Count() == 2) double. Click. Count++; ((JButton) e. get. Source()). set. Text("按下一下 : " + (click. Count++) + "次 | 連按兩次 : " + double. Click. Count + "次"); }

Ex 3 -4 (2) //處理滑鼠游標進入元件的方法 public void mouse. Entered(Mouse. Event e) { ((JButton) e.

Ex 3 -4 (2) //處理滑鼠游標進入元件的方法 public void mouse. Entered(Mouse. Event e) { ((JButton) e. get. Source()). set. Text("滑鼠游標進入按鈕範圍"); } //處理滑鼠游標離開元件的方法 public void mouse. Exited(Mouse. Event e) { ((JButton) e. get. Source()). set. Text("滑鼠游標離開按鈕範圍"); } //處理按下滑鼠按鍵動作的方法 public void mouse. Pressed(Mouse. Event e){ switch(e. get. Button()){ //取得滑鼠被按下的按鍵 case Mouse. Event. BUTTON 1 : lb. Mouse. Button. set. Text("滑鼠左鍵被按下"); break; case Mouse. Event. BUTTON 2 : lb. Mouse. Button. set. Text("滑鼠中間鍵被按下"); break; case Mouse. Event. BUTTON 3 : lb. Mouse. Button. set. Text("滑鼠右鍵被按下"); break; case Mouse. Event. NOBUTTON : lb. Mouse. Button. set. Text("沒有滑鼠按鍵被按下"); break; } }

Ex 3 -4 (3) //處理放開滑鼠按鍵動作的方法 //即使不處理事件但仍須定義空的回應方法 public void mouse. Released(Mouse. Event e){ } };

Ex 3 -4 (3) //處理放開滑鼠按鍵動作的方法 //即使不處理事件但仍須定義空的回應方法 public void mouse. Released(Mouse. Event e){ } }; //以匿名類別的方式實作Mouse. Motion. Listener介面, //宣告回應滑鼠事件的監聽器 Mouse. Motion. Listener mml. Frame = new Mouse. Motion. Listener(){ public void mouse. Dragged(Mouse. Event e){ //滑鼠拖曳 lb. Mouse. set. Text("滑鼠在視窗範圍內 [拖曳] , 游標位置在 ( " + e. get. X() + ", " + e. get. Y() + " )"); } public void mouse. Moved(Mouse. Event e){ //滑鼠移動 lb. Mouse. set. Text("滑鼠在視窗範圍內 [移動] , 游標位置在 ( " + e. get. X() + ", " + e. get. Y() + " )"); } };

Ex 3 -4 (4) Mouse. EX(){ Box bx. Btn = new Box(Box. Layout. X_AXIS);

Ex 3 -4 (4) Mouse. EX(){ Box bx. Btn = new Box(Box. Layout. X_AXIS); bx. Btn. add(Box. create. Horizontal. Glue()); bx. Btn. add(click. ME); //加入按鈕元件 bx. Btn. add(Box. create. Horizontal. Glue()); Container cp = get. Content. Pane(); //取得內容面版 Box bx. Label = new Box(Box. Layout. Y_AXIS); bx. Label. add(lb. Mouse); //將標籤元件加入Box容器 bx. Label. add(Box. create. Vertical. Strut(10)); bx. Label. add(lb. Mouse. Button); cp. add(bx. Btn); //將包含按鈕元件的Box容器加入內容面版 cp. add(bx. Label, Border. Layout. SOUTH); //將包含標籤元件的Box容器加入面版 click. ME. add. Mouse. Listener(ml. Btn); //註冊由ml. Btn監聽click. ME元件的滑鼠事件 add. Mouse. Motion. Listener(mml. Frame); //註冊由mml. Frame監聽視窗的滑鼠移動事件 set. Default. Close. Operation(JFrame. EXIT_ON_CLOSE); set. Size(300, 250); set. Visible(true); } public static void main(String args[]) { new Mouse. EX(); //產生視窗框架物件 } }

Ex 3 -5 (1) import javax. swing. *; //引用Swing套件 import java. awt. *; import

Ex 3 -5 (1) import javax. swing. *; //引用Swing套件 import java. awt. *; import java. awt. event. *; //引用處理事件的event套件 public class Focus. Key. EX extends JFrame { JLabel lb. Key = new JLabel("鍵盤事件 : "), //宣告標籤元件 lb. Input = new JLabel("輸入字元 : "); JButton btn. One = new JButton("按鈕一"), //宣告按鈕元件 btn. Two = new JButton("按鈕二"); //實作Focus. Listener介面的監聽器類別 class Btn. Focus. Listener implements Focus. Listener { private String btn. Name; public Btn. Focus. Listener(String name){ //建構子 btn. Name = name; } public void focus. Gained(Focus. Event e){ //處理取得焦點的方法 ((JButton) e. get. Source()). set. Text(" [" + btn. Name + "] 取得焦點"); } public void focus. Lost(Focus. Event e){ //處理失去焦點的方法 ((JButton) e. get. Source()). set. Text(" [" + btn. Name + "] 失去焦點"); } };

Ex 3 -5 (2) //以匿名類別的方式實作Key. Listener介面, //宣告回應滑鼠事件的監聽器 Key. Listener kl. Button = new Key.

Ex 3 -5 (2) //以匿名類別的方式實作Key. Listener介面, //宣告回應滑鼠事件的監聽器 Key. Listener kl. Button = new Key. Listener() { //處理鍵盤按鍵被按下的方法 public void key. Pressed(Key. Event e) { lb. Key. set. Text("鍵盤事件 : [" + Key. Event. get. Key. Text(e. get. Key. Code()) + "] 鍵被按下"); } //處理鍵盤按鍵被放開的方法 public void key. Released(Key. Event e) { lb. Key. set. Text("鍵盤事件 : [" + Key. Event. get. Key. Text(e. get. Key. Code()) + "] 鍵被放開"); } //處理由鍵盤輸入字元的方法 public void key. Typed(Key. Event e) { lb. Input. set. Text("輸入字元 : '" + e. get. Key. Char() + "'"); } };

Ex 3 -5 (3) Focus. Key. EX(){ btn. One. add. Focus. Listener(new Btn. Focus.

Ex 3 -5 (3) Focus. Key. EX(){ btn. One. add. Focus. Listener(new Btn. Focus. Listener("按鈕一")); btn. Two. add. Focus. Listener(new Btn. Focus. Listener("按鈕二")); //註冊監聽按鈕焦點事件的監聽器物件 btn. Two. add. Key. Listener(kl. Button); //註冊由kl. Button監聽視窗接收到的鍵盤事件 Container cp = get. Content. Pane(); //取得內容面版 cp. set. Layout(new Grid. Layout(2, 2, 5, 5)); //設定使用Grid. Layout管理版面佈局 cp. add(btn. One); //將按鈕元件加入內容面版 cp. add(btn. Two); cp. add(lb. Key); //將顯示訊息的標籤加入內容面版 cp. add(lb. Input); set. Default. Close. Operation(JFrame. EXIT_ON_CLOSE); set. Size(450, 130); set. Visible(true); } public static void main(String args[]) { new Focus. Key. EX(); //產生視窗框架物件 } }