GUI:Graphical User Interface,即图形用户界面,用于计算机与用户交互的一种方式
AWT:Abstract Window Toolkit,抽象窗口开发包。重量级组件。在Windows系统与Linux系统都可运行,但由于是调用操作系统实现的组件,在两个平台运行后并不是完全相同,可移植性一般。
位于java.awt包中。
Swing:在AWT基础上发展而来,轻量级组件,不依赖操作系统的支持,可移植性较好。
位于javax.swing包中。
java.AWT中主要的类:
Component:封装了组件通用的方法和属性,如图形的组件对象、大小、显示位置、前景色和背景色、边界、可见性等。其对象不能独立显示。
注意:组件包括基本组件与容器组件,容器组件用于容纳其他组件
Container:封装了容器组件类的通用的方法和属性
注意:容器组件不但能容纳基本组件,还能容纳其他容器组件
Window:顶级窗口,可独立存在
Panel: 确定一个四边形,可以添加其他组件(add()方法),但必须放在Window或Window的子类之中,才能显示出来。
Frame:可以添加其他组件(add()方法),具有标题和缩放角
Dialog 是一个带标题和边界的顶层窗口,边界一般用于从用户处获得某种形式的输入
TextComponent:允许编辑文本的组件的超类
TextField:创建文本框对象
TextArea:显示文本的多行区域。可以将它设置为允许编辑或只读
Button:标签按钮。当按下该按钮时,应用程序能执行某项动作
Label:显示一行只读文本。文本可由应用程序更改,但是用户不能直接对其进行编辑
Frame用法:
import java.awt.Color;
import java.awt.Frame;
/**
* java GUI中Frame常用用法
* 2014-4-14
* @author Administrator
*
*/
public class FrameDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//创建一个初始不可见的窗口f1(参数显示标题)
Frame f1=new Frame("The first frame");
////设置窗口大小(参数是宽度及高度,单位是像素)
f1.setSize(23,45);
////设置窗口的位置(参数是坐标)
f1.setLocation(15,20);
//调用类的成员来显示窗口颜色
f1.setBackground(Color.blue);
//设置是否可以调整大小
f1.setResizable(true);
//设置是否可见
f1.setVisible(true);
//创建一个初始不可见的窗口f2
Frame f2=new Frame();
//设置窗口位置大小
f2.setBounds(70,140,50,200);
f2.setBackground(Color.BLUE);
//设置窗口标题
f2.setTitle("The second frame");
//设置是否可以调整大小
f2.setResizable(false);
//设置是否可见
f2.setVisible(true);
//获得f2窗口标题
System.out.println(f2.getTitle());
}
}
通过继承创建Frame窗口
import java.awt.*;
/**
* java GUI中Frame类的继承使用
* 2014-4-15
* @author Administrator
*
*/
public class FrameDemo2 {
private static final Color BLUE = null;
private static final Color YELLOW = null;
private static final Color RED = null;
private static final Color GREEN = null;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//Color类的常量大小写用法一致,但建议用大写,为了符合规范
MyFrame f1=new MyFrame(100,100,200,200,Color.blue,"first");
MyFrame f2=new MyFrame(300,100,200,200,Color.green,"second");
MyFrame f3=new MyFrame(100,300,200,200,Color.orange,"third");
MyFrame f4=new MyFrame(300,300,200,200,Color.CYAN,"Fourth");
}
}
class MyFrame extends Frame{
MyFrame(int x,int y,int a,int b,Color c,String s){
//创建窗口的几个主要元素:位置参数,大小,颜色,布局管理器,
//s是否可以调整大小,是否可见
super("This is my"+s+"frame");
setBounds(x,y,a,b);
setBackground(c);
setResizable(true);
//布局管理器
setLayout(null);
setVisible(true);
}
}
创建嵌套窗口,Panel窗口嵌套在Frame中
import java.awt.Color;
import java.awt.Frame;
import java.awt.Panel;
/**
* java GUI Panel用法
* 2014-4-15
* @author Administrator
*
*/
public class PanelDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Frame f=new Frame("Frame with Panel");
f.setBounds(300, 300, 500, 500);
f.setBackground(Color.LIGHT_GRAY);
f.setResizable(true);
f.setLayout(null);
Panel p=new Panel(null);
//Panel窗口的位置参数是以Frame窗口左上角为基准
p.setBounds(50, 50,400, 400);
//通过Color类三原色构造方法设置窗口颜色
p.setBackground(new Color(0,0,254));
//将Panel窗口添加到Frame中
f.add(p);
f.setVisible(true);
}
}
继承的写法:
import java.awt.*;
public class TestMultiPanel {
public static void main(String args[]) {
new MyFrame2("MyFrameWithPanel",300,300,400,300);
}
}
class MyFrame2 extends Frame{
private Panel p1,p2,p3,p4;
MyFrame2(String s,int x,int y,int w,int h){
super(s);
setLayout(null);
p1 = new Panel(null); p2 = new Panel(null);
p3 = new Panel(null); p4 = new Panel(null);
p1.setBounds(0,0,w/2,h/2);
p2.setBounds(0,h/2,w/2,h/2);
p3.setBounds(w/2,0,w/2,h/2);
p4.setBounds(w/2,h/2,w/2,h/2);
p1.setBackground(Color.BLUE);
p2.setBackground(Color.GREEN);
p3.setBackground(Color.YELLOW);
p4.setBackground(Color.MAGENTA);
add(p1);add(p2);add(p3);add(p4);
setBounds(x,y,w,h);
setVisible(true);
}
}