Java圖形使用者界面
圖形使用者界面設計
JFrame類
标簽
布局管理器
圖形使用者界面設計
建立GUI元件的步驟:
設計元件,合理布局 —> 定義界面上的響應。
GUI支援的包
AWT包:包含有基本元件類,布局管理類,容器類和接口類。
Java.awt.
Swing包:AWT包的更新版本。
javax.swing。
GUI容器與元件
元件不能獨立的顯示,必須要在容器上。
Java的容器分為兩種:頂層容器和中間層容器。
頂層容器:可以獨立浮動于螢幕上,GUI必有。
JFrame:作為應用程式的主視窗;
JApplet:小程式視窗顯示;
JWindows:視窗。
中間層容器:不可獨立存在。
JPanel:面闆;
JScrollPane:滾動面闆。
JFrame類
一些基本設定如下代碼:
import java.awt.Color;//顔色類
import javax.swing.JFrame;//主視窗
public class Example {
public static void main(String[] args) {
//JFrame();預設的無标題資訊。
JFrame f = new JFrame("My windous");
//設定視窗的大小,以像素為機關。
f.setSize(300,200);
//先調用getContentPane獲得内容面闆,在設定背景顔色。
f.getContentPane().setBackground(Color.BLACK);
//設定視窗可見,預設不可見。
f.setVisible(true);
}
}
運作結果:
标簽
标簽的構造方法:
import java.awt.Label //包的導入
JLabel();//建立空标簽
JLabel(String text);//建立名為text的标簽
JLabel(String text, int align);//建立名字為text的标簽,align是對其方式
align的值可以為:JLabel.RIGHT;JLabel.LEFT;JLabel.CENTER等。
添加标簽後需要再使用getContentPane()獲得主視窗的内容面闆再使用add添加對象。具體見本節代碼(如下):
Font類來設定字型;
用法:Font(String name, int style, int size);
三個參數name:字型,如,黑體,宋體等;
style:字型,系統提供三個整形常量來代表表示字型。
Font.PLAIN(正常體),Font.ITALIC(斜體),Font.BOLD(粗體)。
size:字号。
建立完字型對象之後,使用setFont(Font fn)方法調用。
Color類設定顔色
Color(int red, int green, int blue);
使用rgb組合。取值在0~255之間。也可以直接調用Color.red等來直接設定。
建立完對象之後,需要調用setForeground(Color c)方法來實作。
import java.awt.Color;
import java.awt.Font;
import java.awt.Label;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Example {
public static void main(String[] args) {
JFrame f = new JFrame("My windous");
f.setSize(300,200);
f.getContentPane().setBackground(Color.RED);//先調用getContentPane獲得内容面闆,在設定背景顔色。
JLabel l1 = new JLabel("使用者名:", JLabel.RIGHT);
f.getContentPane().add(l1);//先擷取内容面闆,在将label内容添加在标簽中
Font f1 = new Font("黑體", Font.ITALIC, 30);//先建立一個對象
l1.setFont(f1);//在使用标簽對象調用
//設定标簽顔色
Color c = new Color(200, 100, 150);//0~255之間,三個參數組合,也可以使用Color.red等。
l1.setForeground(c);//由l1标簽調用setForeGround方法來設定标簽顔色
f.setVisible(true);
}
}
Button類:
JButton(); //建立一個無文字顯示的按鈕
JButton(String text);建立一個内容為text的按鈕。
JPanel j = new JPanel();//建立面闆
f.add(j);
//按鈕元件的運用
JButton b1 = new JButton("開機");
j.add(b1);
JPanel類
JPanel:中間容器,用于添加元件,這樣可以使得視窗上有多個元件。
先建立JPanel對象,在使用add()方法添加即可。
布局管理器
布局管理器用于設定元件的顯示方式和顯示位置。
有以下幾種布局方式:
FlowLayout:流式布局:
簡單的從左到右的順序布局。
//建立test類來繼承JFrame類
class test extends JFrame{
//定義5個要顯示的按鈕
JButton b1,b2,b3,b4,b5;
//在構造函數中添加按鈕的定義
public test() {
b1 = new JButton("按鈕1");
b2 = new JButton("按鈕2");
b3 = new JButton("按鈕3");
b4 = new JButton("按鈕4");
b5 = new JButton("按鈕5");
//定義一個流式布局
FlowLayout f = new FlowLayout();
//擷取視窗的内容面闆
Container c = this.getContentPane();
//設定流式布局方法
c.setLayout(f);
//添加按鈕
c.add(b1);
c.add(b2);
c.add(b3);
c.add(b4);
c.add(b5);
}
}
輸出結果:
BorderLayout:邊界布局:
按照東南西北中位置來布局。
//建立test類來繼承JFrame類
class test extends JFrame{
//定義5個要顯示的按鈕
JButton b1,b2,b3,b4,b5;
//在構造函數中添加按鈕的定義
public test() {
b1 = new JButton("按鈕1");
b2 = new JButton("按鈕2");
b3 = new JButton("按鈕3");
b4 = new JButton("按鈕4");
b5 = new JButton("按鈕5");
//定義一個邊界布局
BorderLayout f = new BorderLayout();
//擷取視窗的内容面闆
Container c = this.getContentPane();
//設定流式布局方法
c.setLayout(f);
//添加按鈕,以及其相關位置:北南西東中。
c.add(b1,BorderLayout.NORTH);
c.add(b2,BorderLayout.SOUTH);
c.add(b3,BorderLayout.WEST);
c.add(b4,BorderLayout.EAST);
c.add(b5,BorderLayout.CENTER);
}
}
輸出結果:
GridLayout:網格布局:
按照劃分的網格區域來布局。
//建立test類來繼承JFrame類
class test extends JFrame{
//定義5個要顯示的按鈕
JButton b1,b2,b3,b4,b5;
//在構造函數中添加按鈕的定義
public test() {
b1 = new JButton("按鈕1");
b2 = new JButton("按鈕2");
b3 = new JButton("按鈕3");
b4 = new JButton("按鈕4");
b5 = new JButton("按鈕5");
//定義一個網格布局,3行2列
GridLayout f = new GridLayout(3,2);
//擷取視窗的内容面闆
Container c = this.getContentPane();
//設定流式布局方法
c.setLayout(f);
//添加按鈕
c.add(b1);
c.add(b2);
c.add(b3);
c.add(b4);
c.add(b5);
}
}
輸出結果:
還有其他布局:CardLayout:卡片布局;GridBagLayout:網格包布局;手工布局。
setLayout(null):
将界面布局管理的主動權交給使用者,由使用者自行設定坐标來實作。