GUI核心技術Swing AWT
-
JRE 環境
-
丑 畫面不美觀
作用
-
了解監聽
-
學習MVC
AWT
2.1AWT介紹
-
包含很多類和介面
-
元素: 視窗 按鈕 文本框
-
組件 component: button textArea label container
-

2.2組件 和容器
frame
-
frame 建構式
-
視窗大小
-
視窗可見性
-
背景顏色
-
color 顏色
-
彈出的初始位置 setlocation 00 左上角
-
設定額大小固定 setResize 不能改變大小
視窗關閉不掉
思路 :繼承Frame 所以實作封裝方法
package com.GUI;
?
import java.awt.*;
?
public class FraDemo01 {
public static void main(String[] args) {
?
Frame frame = new Frame();
?
// 設定大小
frame.setSize(300,300);
?
//設定顏色
frame.setBackground(Color.darkGray);
?
//設定位置
frame.setLocation(300,300);
?
//設定可見性
frame.setVisible(true);
?
//設定可不可以 伸縮
frame.setResizable(false);
?
}
}
?
package com.GUI;
?
import java.awt.*;
?
public class FraDemo02 extends Frame {
static int count =0;
FraDemo02 (int x, int y, int len, int wid,Color color) {
super("我的視窗"+(++count));
setBackground(color);
setBounds(x,y,len,wid);
setResizable(false);
setVisible(true);
}
?
public static void main(String[] args) {
FraDemo02 f1 = new FraDemo02(100,100,200,200,Color.CYAN);
FraDemo02 f2 = new FraDemo02(100,300,200,200,Color.CYAN);
FraDemo02 f3 = new FraDemo02(300,100,200,200,Color.CYAN);
FraDemo02 f4 = new FraDemo02(300,300,200,200,Color.CYAN);
System.out.println("共創建"+FraDemo02.count);
?
}
}
?
2.3 panel
-
布局 setLayout(null)
-
panel 設定各種引數 相對于frame的相對坐標
-
frame add 添加 panel
-
frme設定 可見度
-
監聽事件 監聽視窗關閉事件 //需要什么引數new 什么引數adapter
-
事件 結束程式
package com.GUI;
?
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
?
public class FraDemo03 {
public static void main(String[] args) {
Frame f1 = new Frame("77go");
Panel p1 = new Panel();
f1.setLayout(null);
f1.setBackground(new Color(165, 85, 85));
f1.setBounds(100,100,400,400);
p1.setBackground(new Color(19, 15, 15, 3));
p1.setBounds(50,50,300,300);
?
f1.setVisible(true);
f1.add(p1);
?
f1.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
?
2.3布局管理器
-
流式布局 new FlowLayout
package com.GUI; ? import java.awt.*; ? public class FraDemo04 { public static void main(String[] args) { Frame f = new Frame("77go"); Button x = new Button("x"); Button x2 = new Button("x2"); ? //f.setLayout(new FlowLayout()); f.setLayout(new FlowLayout(FlowLayout.CENTER)); f.setSize(200,200); ? f.setVisible(true); ? f.add(x); f.add(x2); ? ? ? } } ? -
東西南北 中borderlayout
pacge com.GUI; //東西南北中布局 import java.awt.*; ? public class FraDemo05 { public static void main(String[] args) { Frame frame = new Frame("77go"); Button b1 = new Button("hihi"); Button b2 = new Button("hihi"); Button b3 = new Button("hihi"); Button b4 = new Button("hihi"); Button b5 = new Button("hihi"); frame.add(b1,BorderLayout.EAST) ; frame.add(b2,BorderLayout.CENTER) ; frame.add(b3,BorderLayout.NORTH) ; frame.add(b4,BorderLayout.WEST) ; frame.add(b5,BorderLayout.SOUTH) ; frame.setSize(200,200); frame.pack(); frame.setVisible(true); ? } } -
表格布局 grid
pacge com.GUI; //東西南北中布局 import java.awt.*; ? public class FraDemo05 { public static void main(String[] args) { Frame frame = new Frame("77go"); Button b1 = new Button("hihi"); Button b2 = new Button("hihi"); Button b3 = new Button("hihi"); Button b4 = new Button("hihi"); Button b5 = new Button("hihi"); frame.add(b1,BorderLayout.EAST) ; frame.add(b2,BorderLayout.CENTER) ; frame.add(b3,BorderLayout.NORTH) ; frame.add(b4,BorderLayout.WEST) ; frame.add(b5,BorderLayout.SOUTH) ; frame.setSize(200,200); frame.pack(); frame.setVisible(true); ? } } ? -
pack()自動 布局

package com.GUI;
?
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
?
public class HMDemo {
public static void main(String[] args) {
/*思考:1分割成上下兩塊 grid實作 panel
* 2 然后上 使用 東西中 實作 中由panel 構成
* 3 為panel 中添加grid*/
?
//Frame 的基本構架
Frame frame = new Frame("77go");
frame.setSize(300,300);
frame.setVisible(true);
frame.setLayout(new GridLayout(2,1));
?
Button button1 = new Button("bbb");
Button button2 = new Button("bbb");
Button button3 = new Button("bbb");
Button button4 = new Button("bbb");
Button button5 = new Button("bbb");
Button button6 = new Button("bbb");
Button button7 = new Button("bbb");
Button button8 = new Button("bbb");
Button button9 = new Button("bbb");
Button button10 = new Button("bbb");
//創建大的panel
Panel panel1 = new Panel();
panel1.setLayout(new BorderLayout());
panel1.add(button1,BorderLayout.WEST);
panel1.add(button2,BorderLayout.EAST);
Panel panel2 = new Panel();
panel2.setLayout(new GridLayout(2,2));
panel2.add(button3);
panel2.add(button4);
panel2.add(button6);
panel2.add(button5);
panel1.add(panel2,BorderLayout.CENTER);
?
Panel panel3 = new Panel();
panel3.setLayout(new BorderLayout());
panel3.add(button7,BorderLayout.WEST);
panel3.add(button8,BorderLayout.EAST);
Panel panel4 = new Panel();
panel4.setLayout(new GridLayout(2,1));
panel4.add(button9);
panel4.add(button10);
panel3.add(panel4,BorderLayout.CENTER);
frame.pack();
?
//frame 添加panel
frame.add(panel3);
frame.add(panel1);
?
?
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
?
總結
-
frame是一個頂級視窗
-
panel 不可以獨立顯示
-
布局管理器 layout
-
流
-
東西南北中
-
表格
-
-
大小 定位 背景顏色 可見 可拉伸 自動布局
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/299540.html
標籤:其他
上一篇:Spring基礎介紹
下一篇:作業25:實作 strStr()
