Java GUI編程(一)


********************第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添加到 邊框布局的容器中

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM