GUI
Graphic User Interface 用户图形化编程接口
AWT:重量级,依赖底层系统界面的实现
包:java.awt.*; 1.0
Swing:1.2出现,轻量级实现,纯java编写的界面,在AWT的基础上发展起来(一般Swing中的类以J开头)
包:javax.swing.* 1.4 javax 是对java的扩展
组件 swing
布局 事件 awt
组件 (控件) : 按钮 输入框 单选框 复选框 文本 等....
容器: 承载组件
JFrame 窗口
JPanle 面板
//创建窗体对象
Jframe frm = new Frame();
//设置宽高,单位是像素
from.setSize(400,400);
//设置x抽和y轴
from.setLocation(10,10);
//设置宽高和x,y
frm.setBounds(50,50,400,400);
//设置背景(注意先获得内容面板,否则颜色被内容面板挡住)
frm.getContentPane().setBackground(Color.YELLOW);
//设置标题
from.setTitle("第一个窗体");
//设置窗体图标(图片放在项目路径下的image文件夹)
ToolKit toolkit =frm.getToolKit;
frm.setIconImage(toolkit.getImage("image/title.jpg"))
//设置窗体关闭,程序关闭
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//窗体居中的算法:屏幕宽度减去窗体宽度再除以2得到窗体的x坐标,屏幕高度减去窗体的高度再除以2得到窗体的y坐标
Dimension d=toolkit.getScreenSize();
frm.setLocation((int)(d.getWidth()-frm.getWidth)/2,(int)(d.getHeight()-frm.getHeight)/2)
frm.setLocationRelativeTo(null);//窗体居中
//打开窗体
from.setVisible(true);
1、布局:Layout
每个容器都有一个布局管理器 LayoutManager
我们可以通过为容器设置不同的布局管理器 实现不同的布局方式
A. BorderLayout(边框布局) JFrame的默认布局管理器
会改变控件的原有大小
意味着 在borderLayout下设置控件大小是无效的
通过add方法向容器中添加组件的时候,默认是向Center添加
可以通过BorderLayout的常量(东西南北中)设置位置
jf.add(btn1, BorderLayout.CENTER);
B. FlowLayout(流式布局)JPanel 的默认布局管理器
特点是:水平居中排列 一行放不下后 会自动换行居中
从左向右排列
不会改变控件的大小
C. GridLayout(网格布局)
总是先尽量满足行数
new GridLayout(m,n)
8 8
m 是固定的
8
k个控件 放到 容器中
17
找 满足 m * x >= k 的 x 的最小值
8x >= 17
x 列的个数
3
D .卡片布局:
定义N多卡片
CardLayout cl = new CardLayout();
frm.setLayout(cl)
Container c=frm.getContentPane();//注意:这里不能将控件直接加到Jframe中,必须加到内容面板!!
c.add(new JLabel("a",Label.CENTER),"first")
c.add(new JLabel("b",Label.CENTER),"second")
cl.show(c,"first")//显示第一张
cl.next(c)//显示下一张
//轮播
for循环中调用显示下一张方法
E .绝对定位(null)
控件对象.setBounds(x,y,width,height),所有控件的起点坐标和宽度高度都要直接指定!
2、常用的控件
2-1、form中的控件
表单组件
文本框
JTextField
单选框
JRadioButton
复选框
JCheckBox
密码框
JPasswordField
下拉框
JComboBox
文本域
JTextArea
文本标签
JLabel
按钮
JButton
2-2 panel
JPanel
JScrollPane
JSplitPane
JTabbedPane
JOptionPane
JMenu
JMenuBar
JMenuItem
JTable
JTree
事件
ActionListener