用户界面的类型:
- 字符用户界面(CUI):例如 MS-DOS
- 图形用户界面(GUI):例如 Microsoft Windows
GUI的两大概念:
- 组件类(Component):其子类或间接子类创建的对象称为一个组件
- 容器类(Container):其子类或间接子类创建的对象称为一个容器
AWT:
- AWT(Abstract Window Toolkit)是在Swing出现之前用来设计界面的工具包
- 用awt包中的类创建的用户界面在不同的操作平台上有不同的表现。使用不灵活
- import java.awt.*;
AWT组件大致可以分为以下三类:
- 容器类组件
- 布局类组件
- 普通组件类
Swing:
- Swing是对AWT的扩展,它是Java 2中的一个标准包
- 组件都是以J开头,例如:JFrame、JButton等。swing界面在不同的平台上外观完全一样,真正做到平台独立
- import javax.swing.*;
Java程序界面的构成
一个顶层容器(即主窗口)
顶层容器包含若干个中间容器
每个中间容器包含若干个基本组件
容器: 是用来容纳和管理一组界面元素的对象。基本组件必须被安排在某个容器中,否则就无法使用。
类JFrame是java.awt.Frame的子类,用来创建application,即创建用户主窗口
JFrame常用方法:
- JFrame(): 无参构造方法,创建无标题窗口。
- JFrame(String s) : 有参构造方法,创建标题名字是字符串s的窗口
JFrame win = new JFrame("Hello");
//若是用记事本编辑可能无法适用中文设置
- setTitle(String title) : 设置窗口(JFrame)标题文本
- setBounds(int a,int b,int width,int height) :设置窗口的初始位置是(a,b),即距屏幕左面a个像素、距屏幕上方b个像素;窗口的宽是width,高是height
- get/setSize() : 获取/设置窗口的大小
- setLocation(int x,int y) :设置窗口的位置,默认位置是(0,0)
- setLocationRelativeTo(null):设置窗口居中
- setResizable(boolean b) :设置窗口是否可调整大小,默认可调整
- setAlwaysOnTop(true) :设置窗口总是在顶端
- setVisible(boolean b) :设置窗口的可见性,默认False不可见
- add(Object a) :将组件添加到窗口中
- dispose() : 撤销当前窗口并释放当前窗口所用的资源
- setExtendedCloseOperation(int state) :设置窗口的扩展状态,参数state取JFrame类中的类常量MAXIMIZED——HORIZ(水平方向最大化)、MAXIMIZED_VERT(垂直方向最大化)、MAXIMIZED_BOTH(水平、垂直都是最大化)
- setDefaultCloseOperation(int operation) :设置单击窗口右上角的关闭图标后程序做出的处理,参数operation取JFrame类中的int型static常量DO_NOTHING_ON_CLOSE(什么都不做)、HIDE_ON_CLOSE(隐藏当前窗口)、DISPOSE_ON_CLOSE(隐藏当前窗口并释放窗体占有的其他资源)、EXIT_ON_CLOSE(结束窗口所在的应用程序)
设置JFrame的图标
相关类:
- 图标类:javax.swing.ImageIcon
- 图像类:java.awt.ImageIcon
创建图标和图像对象:
- ImageIcon il = new ImageIcon(“x.gif”);
- Image image = il.getImage();
设置:
- setIconImage(image);
设置三个主体窗口实现上面介绍的内容:
import javax.swing.*;
import java.awt.*;
public class TwoThreads_Test{
public static void main(String[] args){
//第一个窗口
JFrame win1 = new JFrame();
win1.setVisible(true);
win1.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
//第二个窗口
JFrame win2 = new JFrame("Second JFrame");
win2.setBounds(60,60,300,150);
Container con = win2.getContentPane();
con.setBackground(Color.yellow); //设置窗口的背景色
win2.setVisible(true);
win2.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
//第三个窗口
JFrame win3 = new JFrame();
win3.setTitle("Third JFrame");
win3.setIconImage(new ImageIcon("a.jpg").getImage()); //更改图标
win3.setLocation(200,200);
win3.setSize(300,150);
win3.setVisible(true);
win3.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}