-------android教育訓練、java教育訓練、期待與您交流!----------
1、GUI概述
GUI:Graphical User Interface(圖形使用者接口)。用圖形的方式,來顯示計算機操作的界面,這樣更友善更直覺。
CLI:Command line User Interface(指令行使用者接口)。就是常見的Dos指令操作,需要記憶一些常用的指令,操作不直覺。
Java為GUI提供的對象都存在java.Awt和javax.Swing兩個包中。
java.Awt: Abstract Window ToolKit(抽象視窗工具包),需要調用本地系統方法實作功能,屬于重量級控件。
javax.Swing: 在AWT的基礎上,建立的一套圖形界面系統,其中提供了更多的元件,而且完全有Java實作。增強了移植性,屬輕量級控件。
GUI元件繼承關系圖:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2QvwVe0lmdhJ3ZvwFM38CXlZHbvN3cpR2Lc1TPB10QGtWUCpEMJ9CXsxWam9CXwADNvwVZ6l2c052bm9CXUJDT1wkNhVzLcRnbvZ2Lc1TP3RGb41WW2VzRkZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39TN0YDNzUDN1ETOxcDM0EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
其中Container為容器,是一個特殊的元件,該元件可以通過add方法添加其他元件進來。
2、簡單Frame建立示範
下面為建立代碼及相關說明:
/*
* 建立圖形化界面:
* 1、建立frame窗體。
* 2、對窗體進行基本設定:比如大小、位置、布局等等。
* 3、定義元件。
* 4、将元件通過窗體的add方法添加到窗體中
* 5、讓窗體顯示,通過setVisible(true)方法
*/
//簡單Frame示範
public static void frame(){
Frame f = new Frame("my awt"); //new之後預設使用邊界布局
f.setVisible(true); //設定窗體可見
f.setSize(500, 300); //設定窗體大小,機關為px
f.setLocation(300, 100); //設定窗體位置,第一個參數表示距左邊300px,第二個參數表示距頂部100px
f.setLayout(new FlowLayout()); //設定為流式布局
Button b = new Button("我是一個按鈕");
f.add(b); //将button添加到frame中
}
圖形界面效果:
3、窗體事件
class FrameDemo{
private Frame f;
private Button b;
public FrameDemo(){
init();
}
public void init(){
f = new Frame("my frame");
//對frame進行基本設定
f.setBounds(300, 100, 600, 500);
f.setLayout(new FlowLayout());
b = new Button("my button");
f.add(b); //将元件添加到frame中
myEvent(); //加載一下窗體上事件
f.setVisible(true); //顯示窗體
}
private void myEvent(){
f.addWindowListener(new WindowAdapter(){ //監聽關閉按鈕
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
//讓按鈕具備退出程式的功能,按鈕就是事件源。
//通過關閉窗體示例了解到,想要知道哪個元件具備什麼樣的特有監聽器。需要檢視該元件對象的功能。
//通過查閱API,發現按鈕支援一個特有監聽addActionListener
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
});
}
}
4、滑鼠鍵盤事件
class MouseKeyBoardDemo{ //滑鼠鍵盤事件
private Frame f;
private Button b;
private TextField tf;
public MouseKeyBoardDemo(){
init();
}
public void init(){
f = new Frame("my frame");
//對frame進行基本設定
f.setBounds(300, 100, 600, 500);
f.setLayout(new FlowLayout());
b = new Button("my button");
tf = new TextField(10); //10列
f.add(tf); //将文本框添加到窗體中
f.add(b); //将元件添加到frame中
myEvent(); //加載一下窗體上事件
f.setVisible(true); //顯示窗體
}
private void myEvent(){
f.addWindowListener(new WindowAdapter(){ //監聽關閉按鈕
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
b.addActionListener(new ActionListener(){ //添加action監聽
public void actionPerformed(ActionEvent e){
P.rintln("action ok");
}
});
b.addMouseListener(new MouseAdapter(){ //添加滑鼠監聽
private int count = 1;
private int clickCount = 1;
public void mouseEntered(MouseEvent e){
P.rintln("滑鼠第" + count++ + "次進入到按鈕");
}
public void mouseClicked(MouseEvent e){
P.rintln("滑鼠第" + clickCount++ + "次點選按鈕");
if(e.getClickCount() == 2){
P.rintln("輕按兩下動作");
}
}
});
b.addKeyListener(new KeyAdapter(){ //給按鈕添加鍵盤監聽
public void keyPressed(KeyEvent event){
P.rintln(event.getKeyChar() + "..." + event.getKeyCode());
P.rintln(KeyEvent.getKeyText(event.getKeyCode()));
if(event.getKeyCode() == KeyEvent.VK_ESCAPE){ //按Esc鍵退出
System.exit(0);
}
if(event.isControlDown() && event.getKeyCode() == KeyEvent.VK_ENTER){ //按Conrol+Enter鍵退出
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) || code == KeyEvent.VK_BACK_SPACE){}
else{
P.rintln(code + "是非法的");
e.consume();
}
}
});
}
}
5、練習-列出指定目錄内容