Swing入门和布局管理
1. Swing入门
UI:用户操作界面
B/S(Browser/Server): 浏览器服务器模式
C/S(Client/Server):客户端服务器模式
2. 常用组件
分为顶层容器、中间层容器和基本组件。
顶层容器设置大小:setSize
中间层容器和基本组件设置大小:setPrefferedSize
1) 顶层容器:JFrame(带标题栏)、JWindow(不带标题栏)、JApplet(一般嵌入到html中)、JDialog(用于窗体弹出)。
2) 中间层容器:JPanel(面板)、JScrollPane(带滚动条的面板)、JTabbedPane(带选项卡的面板)。
JscrollPane:
关键代码:
//创建文本框 JTextArea
JTextAreajta = new JTextArea();
//创建滚动面板
//注意添加文本框的方法,只能通过构造方法传参方式加载
JScrollPanejsp = new JScrollPane(jta);
//设置滚动面板大小
Dimensiondimen = new Dimension(300,300);
jsp.setPreferredSize(dimen);
jf.add(jsp);
3) 基本组件:功能性组件,不属于容器,在组件上不能继续添加组件。
JRadioButton(单选框)代码:
import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JRadioButton;
public class MyFrame extends JFrame {
publicstatic void main(String[] args) {
JFramejf = new JFrame();
jf.setSize(400,400);
jf.setLocationRelativeTo(null);
jf.setDefaultCloseOperation(3);
jf.setLayout(newFlowLayout());
JRadioButtonjrd1 = new JRadioButton("1");
JRadioButtonjrd2 = new JRadioButton("2");
JRadioButtonjrd3 = new JRadioButton("3");
jf.add(jrd1);
jf.add(jrd2);
jf.add(jrd3);
jf.setVisible(true);
}
}
运行结果:
l 没有形成互斥关系
需要将互斥关系的单选框放入同一个按钮组(ButtonGroup)
添加代码如下:
import javax.swing.ButtonGroup;
//创建按钮组
ButtonGroup bg = new ButtonGroup();
bg.add(jrd1);
bg.add(jrd2);
bg.add(jrd3);
l bg.add();与jf.add();不冲突,理解为bg.add();为逻辑上的添加。
JMenuBar(菜单条)、JMenu(菜单)、JMenuItem(菜单项)
关键代码:
//1、菜单条的添加
JMenuBar bar = new JMenuBar();
//设置菜单条到窗体上
jf.setJMenuBar(bar);
//2、菜单的添加
JMenu menu = new JMenu("File");
bar.add(menu);
//3.菜单上添加菜单项
JMenuItem item = newJMenuItem("new");
menu.add(item);
JMenuItem item1 = new JMenuItem("save");
menu.add(item1);
JMenuItem item2 = newJMenuItem("close");
menu.add(item2);
JMenuItem item3 = newJMenuItem("refresh");
menu.add(item3);
JMenu menu1 = new JMenu("Edit");
bar.add(menu1);
JMenuItem item4 = new JMenuItem("undotyping");
menu1.add(item4);
JMenuItem item5 = newJMenuItem("redo");
menu1.add(item5);
JMenuItem item6 = newJMenuItem("cut");
menu1.add(item6);
JMenuItem item7 = newJMenuItem("copy");
menu1.add(item7);
JMenuItem item8 = new JMenuItem("paste");
menu1.add(item8);
3. 常用布局
1) 布局:组件在容器上的排列方式
2) 常用布局分类:FlowLayout(流式布局)、BorderLayout(边框布局)、GridLayout(网格布局)、null(空布局)
l 流式布局:依次排列,可通过传参改变对齐方式和间隙大小
JPanel默认为流式布局
l 边框布局:分为五个部分:东(East)、南(South)、西(West)、北(North)、中(Center)
组件默认添加在中。
顶层容器默认为边框布局
l 空布局:不使用任何一个布局
添加组件则通过绝对定位方式添加(setBounds,通过坐标定位)