轉自:http://takeme.iteye.com/blog/1876850
GUI(圖形用戶界面)
1 import java.awt.Button; 2 import java.awt.FlowLayout; 3 import java.awt.Frame; 4 import java.awt.event.WindowAdapter; 5 import java.awt.event.WindowEvent; 6 7 /** 8 * GUI(圖形用戶界面) 9 * Graphical User Interface(圖形用戶接口) 10 * 用圖形的方式,來顯示計算機操作的界面,這樣更方便更直觀. 11 * 12 * CLI 13 * Command Line User Interface(命令行用戶接口) 14 * 就是常用的Dos命令行操作. 15 * 需要記憶一些常用的命令.操作更直觀. 16 * 17 * 舉例: 18 * 比如:創建文件夾,或者刪除文件夾等 19 * md haha del haha 20 * 21 * 22 * Java的GUI提供的對象都存在 java.Awt 和 javax.Swing 兩個包中. 23 * 24 * java.Awt:Abstract Window ToolKit(抽象 窗口工具包) 25 * 需要調用本地系統方法實現功能.屬重量級控件 (跨平台不夠強) 26 * 27 * java.Swing:在AWT的基礎上,建立的一套圖形界面系統,器重提供了更多的組件, 28 * 而且完全由java實現,增強了移植性,屬於輕量級控件.(跨平台很好) 29 * 30 * java.swt: IBM 公司開發 Eclipse 用的組件工具 可以Eclipse網站下載后就可以使用了. 31 * 32 * 33 * 布局管理器 34 * 1)容器中的組件的排放方式,就是布局. 35 * 2)常見的布局管理器 36 * FlowLayout(流式布局管理器) 37 * 從左到右的順序排列 38 * Panel默認的布局管理器 39 * BorderLayout(辯解布局管理器) 40 * 東 南 西 北 中 41 * Frame 默認的布局管理器 42 * 不指定布局方式,默認 滿屏覆蓋,在添加一個 也是 滿屏覆蓋 43 * GridLayout (網格布局管理器) 44 * 規則的矩陣 45 * CardLayout (卡片布局管理器) 46 * 選項卡 47 * GridBagLayout(網格包布局管理器) 48 * 非規則的矩陣 49 * 50 * 事件監聽機制組成 51 * 事件源: 52 * 事件:Event 53 * 監聽器:Listener 54 * 時間處理:(引發事件后處理方式) 55 * 56 * 事件源:就是awt包或者swing包中的那些圖像界面組件. 57 * 事件:每個事件源都有自己特定的對應時間和共性時間. 58 * 監聽器:可以出發某一個事件的動作都已經封裝到監聽器中. 59 */ 60 61 62 public class GuiDemo { 63 public static void main(String[] args) { 64 Frame f=new Frame("my awt"); 65 f.setSize(500,400); 66 f.setLocation(300,200); 67 f.setLayout(new FlowLayout()); 68 69 Button b=new Button("我是一個按鈕"); 70 71 f.add(b); 72 73 f.addWindowListener(new MyWin()); 74 75 f.setVisible(true); 76 System.out.println("Hello world!"); 77 } 78 79 } 80 81 //因為接口WindowLinstener中的所有方法都被子類 WindowAdapter實現了,. 82 //並且覆蓋了其中的所有方法,那么我們只能繼承 WindowAdapter 覆蓋我們的方法即可 83 class MyWin extends WindowAdapter{ 84 85 @Override 86 public void windowClosing(WindowEvent e) { 87 // TODO Auto-generated method stub 88 //System.out.println("Window closing"+e.toString()); 89 System.out.println("我關了"); 90 System.exit(0); 91 } 92 @Override 93 public void windowActivated(WindowEvent e) { 94 //每次獲得焦點 就會觸發 95 System.out.println("我活了"); 96 //super.windowActivated(e); 97 } 98 @Override 99 public void windowOpened(WindowEvent e) { 100 // TODO Auto-generated method stub 101 System.out.println("我開了"); 102 //super.windowOpened(e); 103 } 104 105 }
簡單Frame
Java代碼
1 import java.awt.Button; 2 import java.awt.FlowLayout; 3 import java.awt.Frame; 4 import java.awt.event.ActionEvent; 5 import java.awt.event.ActionListener; 6 import java.awt.event.WindowAdapter; 7 import java.awt.event.WindowEvent; 8 9 public class FrameDemo { 10 11 //定義該圖像中所需要的組件的引用 12 private Frame f; 13 private Button but; 14 15 FrameDemo(){ 16 init(); 17 18 } 19 20 public void init(){ 21 22 f=new Frame("my freame"); 23 f.setBounds(300,100,600,500); 24 f.setLayout(new FlowLayout()); //采用流式布局 25 26 but=new Button("my button"); 27 //將組件添加到 frame中 28 f.add(but); 29 30 //加載一下窗體上的事件. 31 myEvent(); 32 //顯示窗體 33 f.setVisible(true); 34 } 35 private void myEvent(){ 36 f.addWindowListener(new WindowAdapter(){ 37 @Override 38 public void windowClosing(WindowEvent e) { 39 // TODO Auto-generated method stub 40 //super.windowClosing(e); 41 System.exit(0); 42 } 43 }); 44 45 //讓按鈕具備退出程序的功能 46 /* 47 * 按鈕就是事件源 48 * 那么選擇那個監聽器呢? 49 * 通過關閉窗體實例了解到,下個要知道那個組件具備什么樣的特有監聽器, 50 * 需要查看該組件對象的功能. 51 */ 52 //添加一個活動監聽 53 but.addActionListener(new ActionListener() { 54 55 @Override 56 public void actionPerformed(ActionEvent e) { 57 // TODO Auto-generated method stub 58 System.out.println("退出, 按鈕干的"); 59 System.exit(0); 60 } 61 }); 62 63 } 64 65 public static void main(String[] args) { 66 FrameDemo f=new FrameDemo(); 67 } 68 69 }
鍵盤和鼠標事件
1 import java.awt.Button; 2 import java.awt.FlowLayout; 3 import java.awt.Frame; 4 import java.awt.TextField; 5 import java.awt.event.ActionEvent; 6 import java.awt.event.ActionListener; 7 import java.awt.event.KeyAdapter; 8 import java.awt.event.KeyEvent; 9 import java.awt.event.MouseAdapter; 10 import java.awt.event.MouseEvent; 11 import java.awt.event.WindowAdapter; 12 import java.awt.event.WindowEvent; 13 14 public class MouseAndKeyEvent { 15 16 private Frame f; 17 private Button but; 18 private TextField tf; 19 20 public MouseAndKeyEvent() { 21 init(); 22 } 23 24 private void init(){ 25 f=new Frame("me frame"); 26 f.setBounds(300, 200, 600, 500); 27 f.setLayout(new FlowLayout()); 28 29 tf=new TextField(20); 30 but=new Button("my Botton"); 31 32 f.add(tf); 33 f.add(but); 34 35 event(); 36 37 f.setVisible(true); 38 } 39 40 private void event(){ 41 f.addWindowListener(new WindowAdapter() { 42 @Override 43 public void windowClosing(WindowEvent e) { 44 // TODO Auto-generated method stub 45 System.exit(0); 46 } 47 48 }); 49 tf.addKeyListener(new KeyAdapter() { 50 public void keyPressed(KeyEvent e){ 51 int code=e.getKeyCode(); 52 if(!(code>=KeyEvent.VK_0 && code<=KeyEvent.VK_9)){ 53 System.out.println(code+"....非法的輸入"); 54 e.consume(); //不執行加入文本框. 55 } 56 57 } 58 59 }); 60 61 62 63 but.addActionListener(new ActionListener() { 64 65 @Override 66 public void actionPerformed(ActionEvent e) { 67 // TODO Auto-generated method stub 68 System.out.println("actionPerformed 活動一次"); 69 } 70 }); 71 72 but.addMouseListener(new MouseAdapter() { 73 private int count=0; 74 private int clickCount=1; 75 public void mouseEntered(MouseEvent e){ 76 System.out.println("鼠標進入到改組件"+count++); 77 } 78 79 public void mouseClicked(MouseEvent e){ 80 if(e.getClickCount()==2){ 81 System.out.println("雙擊動作"); 82 }else 83 System.out.println("點擊動作"+clickCount++); 84 85 } 86 87 }); 88 //添加 鍵盤事件 89 but.addKeyListener(new KeyAdapter() { 90 91 public void keyPressed(KeyEvent e){ 92 System.out.println(e.getKeyChar()+"..."+e.getKeyCode()); 93 System.out.println(KeyEvent.getKeyText(e.getKeyCode())+"..."+e.getKeyCode()); 94 //enter 就退出 95 /*if(e.getKeyCode()==KeyEvent.VK_ENTER) 96 System. 97 exit(0);*/ 98 99 //ctrl + Enter 發送消息 100 if(e.isControlDown() && e.getKeyCode()==KeyEvent.VK_ENTER){ 101 System.out.println("我要發送消息!"); 102 } 103 104 } 105 106 }); 107 } 108 109 public static void main(String[] args) { 110 // TODO Auto-generated method stub 111 new MouseAndKeyEvent(); 112 } 113 114 }
- import java.awt.Button;
- import java.awt.FlowLayout;
- import java.awt.Frame;
- import java.awt.TextField;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.awt.event.KeyAdapter;
- import java.awt.event.KeyEvent;
- import java.awt.event.MouseAdapter;
- import java.awt.event.MouseEvent;
- import java.awt.event.WindowAdapter;
- import java.awt.event.WindowEvent;
- public class MouseAndKeyEvent {
- private Frame f;
- private Button but;
- private TextField tf;
- public MouseAndKeyEvent() {
- init();
- }
- private void init(){
- f=new Frame("me frame");
- f.setBounds(300, 200, 600, 500);
- f.setLayout(new FlowLayout());
- tf=new TextField(20);
- but=new Button("my Botton");
- f.add(tf);
- f.add(but);
- event();
- f.setVisible(true);
- }
- private void event(){
- f.addWindowListener(new WindowAdapter() {
- @Override
- public void windowClosing(WindowEvent e) {
- // TODO Auto-generated method stub
- System.exit(0);
- }
- });
- tf.addKeyListener(new KeyAdapter() {
- public void keyPressed(KeyEvent e){
- int code=e.getKeyCode();
- if(!(code>=KeyEvent.VK_0 && code<=KeyEvent.VK_9)){
- System.out.println(code+"....非法的輸入");
- e.consume(); //不執行加入文本框.
- }
- }
- });
- but.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- // TODO Auto-generated method stub
- System.out.println("actionPerformed 活動一次");
- }
- });
- but.addMouseListener(new MouseAdapter() {
- private int count=0;
- private int clickCount=1;
- public void mouseEntered(MouseEvent e){
- System.out.println("鼠標進入到改組件"+count++);
- }
- public void mouseClicked(MouseEvent e){
- if(e.getClickCount()==2){
- System.out.println("雙擊動作");
- }else
- System.out.println("點擊動作"+clickCount++);
- }
- });
- //添加 鍵盤事件
- but.addKeyListener(new KeyAdapter() {
- public void keyPressed(KeyEvent e){
- System.out.println(e.getKeyChar()+"..."+e.getKeyCode());
- System.out.println(KeyEvent.getKeyText(e.getKeyCode())+"..."+e.getKeyCode());
- //enter 就退出
- /*if(e.getKeyCode()==KeyEvent.VK_ENTER)
- System.
- exit(0);*/
- //ctrl + Enter 發送消息
- if(e.isControlDown() && e.getKeyCode()==KeyEvent.VK_ENTER){
- System.out.println("我要發送消息!");
- }
- }
- });
- }
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- new MouseAndKeyEvent();
- }
- }