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); } }
参考资料:尚学堂马士兵视频教程。