********************第16章 GUI編程 **************************
一.什么是GUI
GUI= Graphical User Interface 圖形用戶接口 圖形用戶界面
GUI是用java來編寫帶界面的應用程序
兩套技術
1. AWT(Abstract Window Toolkit)
抽象窗口工具集
圖形界面不是java本身實現的,其實是依賴於操作系統的底層函數
為了讓同一個java程序運行在不同的操作系統上效果一致,所以
awt技術是抽取所有操作系統中共有的函數,這樣既然是函數的交集
肯定功能比較單一
2. Swing
純java實現的 由於本身不依賴於操作系統的底層函數 所以組件比較豐富
也可以跨平台
二.why
1. Awt 和Swing 雖然過時了,但是圖形用戶界面的編程思想並沒有過時,我們學習
這一章主要學習GUI編程的思想,為以后學習Android等打下一個基礎
2. 為了做初級項目
*******************普通組件的繼承關系圖和常用方法******************
普通組件的常用方法
1. 設置位置
setLocation(int x,int y)
2. 設置大小
setSize(int width,int height)
3. 設置位置和大小
setBounds(int x,int y,int width,int height)
4. 設置組件的可見性
setVisible(boolean flag)
容器的常用方法
容器: 它是一個特殊的組件,可以放其他的組件
1. 往容器中添加組件
Component add(Component component)
...
**********************容器組件的繼承關系圖*************************
一.window(窗口)
頂級容器 可以獨立使用
二.Panel(面板)
不是頂級容器 只能放在其他容器中使用(Window或Panel)
早期把java程序分為兩大類:
1. application
2. applet 可以嵌入到網頁中的java小程序
applet后來被flash技術打敗了
**********************************Frame****************************************
頂級容器,可以獨立使用
Frame代表常見的窗口,它是Window類的子類,具有如下幾個特征:
1.Frame對象有標題,允許通過拖拉來改變窗口的位置、大小
2.初始化時為不可見,可用setVisible(true)使其顯示出來
3.默認使用BorderLayout作為布局管理器(稍后再說)
package com.chapter16;
import java.awt.Frame;
public class TestFrame {
public static void main(String[] args) {
Frame frame = new Frame("我是標題");
frame.setLocation(50, 150);
frame.setSize(300, 200);
frame.setVisible(true);
}
}
**********************************Panel****************************************
不是頂級容器,不可以獨立使用,必須放到其他容器中(例如Window或Panel)
1.可作為容器來盛裝其他組件,為放置組件提供空間
2.不能單獨存在,必須放到其他容器中
3.默認使用FlowLayout作為其布局管理器
演示代碼:
package com.chapter16;
import java.awt.Button;
import java.awt.Frame;
import java.awt.Panel;
import java.awt.TextField;
public class TestPanel {
public static void main(String[] args) {
Frame frame = new Frame("我是標題");
frame.setLocation(50, 150);
frame.setSize(250, 120);
//測試Panel
Panel panel = new Panel();
panel.add(new TextField(20));
panel.add(new Button("發送"));
//再把panel放到frame中
frame.add(panel);
frame.setVisible(true);
}
}
**********************************ScrollPane**************************************
帶有滾動條的面板
把Panel 改成 ScrollPane 以后 單行文本框沒了,原因是被按鈕蓋住了..
原因ScrollPane默認是BorderLayout 邊框布局 如果添加的時候 沒有指定添加元素的位置 默認添加到中間
兩個組件都添加到中間 按鈕就把單行文本框覆蓋了
演示代碼:
package com.chapter16;
import java.awt.Frame;
import java.awt.ScrollPane;
import java.awt.TextArea;
public class TestScrollPane {
public static void main(String[] args) {
Frame frame = new Frame("我是標題");
frame.setLocation(50, 150);
frame.setSize(250, 120);
//測試Panel
//ScrollPane.SCROLLBARS_AS_NEEDED 默認值 需要的時候再加滾動條
ScrollPane panel = new ScrollPane(ScrollPane.SCROLLBARS_ALWAYS);
panel.add(new TextArea(5,20));
//panel.add(new Button("發送"));
//再把panel放到frame中
frame.add(panel);
frame.setVisible(true);
}
}
*******************************布局管理器**************************
一.為什么用布局管理器
使用了布局管理器以后,程序員就不需要主動調整控件的大小了, 由布局管理器幫你實現(相當於一個適配器)
要不然程序員一個一個調整組件的大小太麻煩了
二.如何設置容器的布局管理器
布局管理器類的對象
容器對象.setLayout(new XXXLayout());
三.常見的布局管理器(6種)
1. FlowLayout 流式布局
就像在txt或doc文檔中打字一樣,文字出現的順序就是往流式布局 中添加的順序
Panel 默認是流式布局
2. BorderLayout 邊框布局
Frame 默認是邊框布局的
類似4個人圍桌 打麻將
如果想添加五個以上的組件,可以先把組件添加到Panel中,然后把Panel添加到 邊框布局的容器中