轉自:http://takeme.iteye.com/blog/1876850java
GUI(圖形用戶界面) ide
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 }