目录
1.Java中的GUI
GUI(Graphical User Interface):图形用户界面
Java的GUI程序设计技术主要包括AWT、Swing和SWT(使用SWT需要从网上下载安装额外的Java包)
AWT的类是使用原始的GUI对象来运行,在不同的操作系统上,底层对于界面的显示支持不同,导致AWT的程序在不同操作系统上不兼容
Swing包中提供的类加强了对各种操作系统的兼容性,在Java中,对于不同的操作系统,这些类可以更加充分地发挥作用,Swing类支持许多AWT中相似的类所不能支持的特性,但Swing并没有完全替代AWT
(1)AWT
java.awt包是Java内置的包,属于Java基本类库(JFO)的一部分
import java.awt.*
(2)Swing
- 轻量级组件
- 可插入外观组件(并且外观不随操作系统而发生变化)
Swing是在AWT基础上发展而来的轻量级组件(AWT时),与AWT相比不但改进了用户界面,而且所需的系统资源更少
Swing是纯Java组件,完全由Java编写,使所有的应用程序在不同的平台上运行时具有本机外观和相同的行为
Swing不仅包括了AWT所具有的全部组件,而且可以使用树形组件(JTree)、表格(JTable)、选项卡(JTabbedPane)等高级图形组件
事实上,AWT和Swing技术极为相似,GUI组件的类名通常只是比AWT组件的类名多了一个字J
2.swing中常用容器和组件
(1)常用容器
(2)常用组件
3.布局管理器
想在窗体上添加组件,我们就应该清楚是要在窗体的哪一部分添加组件,而窗体本身的区域就是容器(Container类型),我们可以通过获取方法获得Container对象,然后可以创建组件,通过add方法将组件添加到容器中,而这个组件添加进去在容器中怎么放置就是“布局”
布局管理器:能够决定组件或其他窗体中的排列规则的对象
- 布局管理器是用来设置容器的布局方式的
(1)绝对布局(空布局)
使用绝对布局的窗口通常都是固定大小的,组件的位置和形状不会随着窗体的改变而发生变化。
import java.awt.Container;
import javax.swing.JButton;
import javax.swing.JFrame;
public class MyJFrame extends JFrame{
//创建按钮的引用
private JButton button1;
private JButton button2;
//在构造界面的时候就进行初始化界面
public MyJFrame() {
init();
}
//初始化界面
private void init()
{
//设置窗体
this.setSize(600,400);//设置窗体大小
this.setLocationRelativeTo(null);//设置窗体居中显示
this.setTitle("Java网格布局管理器示例");//设置窗体标题
this.setDefaultCloseOperation(EXIT_ON_CLOSE);//设置点击窗体x号时退出程序
//为按钮引用创建按钮对象
button1 = new JButton("按钮1");
button2 = new JButton("按钮2");
//获取Frame界面容器
Container container = this.getContentPane();
//设置容器布局为绝对布局,即组件的摆放不受任何限制
container.setLayout(null);
//为按钮设置位置和大小
button1.setLocation(0, 0);
button1.setSize(200, 100);
button2.setBounds(100,150, 200, 100);
//向Frame的容器中加入按钮组件
container.add(button1);
container.add(button2);
}
public static void main(String[] args) {
MyJFrame frame =new MyJFrame();
frame.setVisible(true);
}
}
空布局优缺点:
- 优点:组件摆放灵活
- 缺点:代码量大,自适应能力差
(2)流布局管理器FlowLayout
- 组件的排列方向:
- 使用此方法来设置排列方向,通过参数设置方向,此处为从右向左排列
- 组件的对齐方式:
- 默认居中对齐:
- 左对齐:
- 跟队头对齐(即第一个进入窗体的组件对齐):
- 组件是否换行:
- 组件会自动换行
- 设置组件之间的距离
-
- 第一个参数:对齐方式
- 第二个参数:横向间隔距离
- 第三个参数:纵向间隔距离
-
import java.awt.ComponentOrientation;
import java.awt.Container;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
public class MyJFrame extends JFrame{
//创建按钮的引用
private JButton b