简介:
窗体布局
目的:将窗体中的基础组件按照特定的布局方式进行摆放
1.分类:
流式布局,边框布局,网格布局,网贷布局,绝对布局(空布局)
2.流式布局:
默认,放入窗体,默认该行的最中间,如果再放,2遍挤压
3.边框布局
将一个窗体分割成5个不同的方位。
东西南北中。
东:East
西:West
南:South
北:North
中:Center
4.网格布局 GridLayout
特点:将一个窗体分割成几行几列的网格。
使用场景:
(1)商品显示
(2)窗体空布局后,利用网格布局进行数据显示+滚动条。
基础组件
1.分类:输入框(账号框,密码框),按钮,文本标签,文本域,文件选择器,单选框,复选框,下拉框
2.作用:美化窗体3.使用方式
(1)api查阅指定组件名称并实例化
(2)将实例化的基础组件添加到中间组件中
(3)将中间组件添加到窗体(顶层组件)中。4.具体基础组件
JLabel 文本标签
JButtom 按钮
JRadioBuccon 单选按钮
JCheckBox 复选按钮
JTextField 普通文本输入框
JPasswordField 密码框
JComboBox 下拉框组件
JTextArea 文本域
JFileChooser 文件选择器5.中间组件
JPanel 面板 使用率最高
JScrollPane 滚动面板public BaseComponentDemo() { this.setTitle("基础组件"); this.setSize(600, 500); this.setDefaultCloseOperation(3); this.setLocationRelativeTo(null); // 建立中间组件JPanel面板 JPanel jpanel = new JPanel(); // 设置jpanel面板的背景颜色 jpanel.setBackground(Color.PINK); // --------------------将基础组件添加到中间组件------------------------------- /** * 1.api查阅指定组件名称并实例化 2.将实例化的基础组件添加到中间组件中 */ /** * 标签 JLabel */ // 1.api查阅指定组件名称并实例化 JLabel jla = new JLabel("用户登录"); // 设置字体大小(加粗,风格) jla.setFont(new Font("华文行楷", Font.BOLD, 30)); // 设置字体颜色 jla.setForeground(Color.YELLOW); // 设置jla组件的边框线 jla.setBorder(BorderFactory.createLineBorder(Color.blue)); // 设置背景无效jla.setBackground(Color.red); // 2.将实例化的基础组件添加到中间组件中 jpanel.add(jla); //--------------------------------------------------- /** * 按钮JButton 按钮的构造函数: 1.可以传入字符串 2.可以传入图片 */ JButton jba = new JButton("登录"); // jba.setEnabled(false); //设置按钮不可编辑 // 设置按钮的大小 jba.setPreferredSize(new Dimension(500, 50)); // 设置字体大小 jba.setFont(new Font("宋体", Font.BOLD, 30)); // 设置背景 jba.setBackground(Color.green); // 设置鼠标的手势 jba.setCursor(new Cursor(Cursor.HAND_CURSOR)); jpanel.add(jba); //--------------------------------------------------- /** * 普通文本输入框 JTextField */ JTextField jtfa = new JTextField(15); jpanel.add(jtfa); /** * 密码输入框 JPasswordField */ JPasswordField jpfa = new JPasswordField(15); jpanel.add(jpfa); /** * 单选按钮 JRadioButton * 注意事项:在窗体中使用单选按钮组件时,必须将多个对象进行合成一组,在一组内只能选择一个 * * 单选按钮分组: ButtonGroup */ JRadioButton jrba = new JRadioButton("男"); JRadioButton jrbb = new JRadioButton("女"); //创建分组对象 ButtonGroup bg = new ButtonGroup(); //将单选按钮加入分组对象中即可 bg.add(jrba); bg.add(jrbb); jpanel.add(jrba); jpanel.add(jrbb); /** * 复选按钮 JCheckBox */ JCheckBox jcba = new JCheckBox("吃饭"); JCheckBox jcbb = new JCheckBox("打康康"); JCheckBox jcbc = new JCheckBox("看电影"); JCheckBox jcbd = new JCheckBox("锤康康"); JCheckBox jcbe = new JCheckBox("睡康康"); jpanel.add(jcba); jpanel.add(jcbb); jpanel.add(jcbc); jpanel.add(jcbd); jpanel.add(jcbe); /** * 下拉框 JComboBox */ JComboBox jcbaa = new JComboBox(); //往下拉框中加载数据 jcbaa.addItem("康康"); jcbaa.addItem("游游"); jcbaa.addItem("王王"); jcbaa.addItem("俊俊"); jcbaa.addItem("烨烨"); jcbaa.addItem("文文"); jpanel.add(jcbaa); /** * 文本域 JTextArea */ JTextArea jtaa = new JTextArea(5, 50); //问题:内容增多后,文本y域的高度会溢出。 //加载滚动条 /** * 实例化一个滚动条面板(中间组件) JScrollPane */ JScrollPane jsp = new JScrollPane(jtaa); jpanel.add(jsp); /** * 文件选择器 JFileChooser */ JFileChooser jfc = new JFileChooser(); jpanel.add(jfc); // 获取窗体后将jpanel中间组件面板加入其中 this.getContentPane().add(jpanel); this.setVisible(true); } public static void main(String[] args) { new BaseComponentDemo(); /** * JLabel * JButton * JTextField * JPasswordField * JRadioButton|ButtonGroup * JCheckBox * JComboBox * JScrollPane * JTextArea * JFileChooser */
流式布局 FlowLayout
//设置窗体! this.setTitle(""); this.setSize(400, 300); this.setDefaultCloseOperation(3); this.setLocationRelativeTo(null); //中间组件 JPanel jpa = new JPanel();//面板 FlowLayout fl = new FlowLayout(); //设置布局 jpa.setLayout(fl); JButton jba = new JButton("黑我"); jpa.add(jba); JButton jbb = new JButton("黑纹2"); jpa.add(jbb); //把中间容器添加到窗体中查看效果 this.getContentPane().add(jpa); this.setVisible(true);
边框布局
this.setTitle(""); this.setSize(400, 300); this.setDefaultCloseOperation(3); this.setLocationRelativeTo(null); JPanel jpa = new JPanel();//面板 BorderLayout bl = new BorderLayout();//边框布局对象 //设置布局 jpa.setLayout(bl); JButton jbd = new JButton("隔壁老王"); jpa.add(jbd,"West");西边 JButton jbe = new JButton("康康的老婆刘二蛋"); jpa.add(jbe,"Center");中间 this.getContentPane().add(jpa); this.setVisible(true);
网格布局
this.setTitle("");
this.setSize(400, 300);
this.setDefaultCloseOperation(3);
this.setLocationRelativeTo(null);
//JPanel面板
JPanel jpa = new JPanel();
//创建网格布局对象
GridLayout gl = new GridLayout(3, 3);//设计几行几列
//设置jpa组件面板的布局
jpa.setLayout(gl);
//组件
偷懒 九宫格
for(int i = 0;i<9;i++) {
jpa.add(new JButton("按钮"+i));
}
this.getContentPane().add(jpa);
this.setVisible(true);
网袋布局
GridBagLayoutDemo 网袋布局 特点:利用了数学种的坐标系原理。根据坐标去定义位置。
GridBagLayout网袋布局对象只是设置面板布局而已,坐标的设置需要另外一个对象处理。 坐标处理的对象是:GridBagConstraints
this.setTitle("");
this.setSize(400, 300);
this.setDefaultCloseOperation(3);
this.setLocationRelativeTo(null);
JPanel jpa = new JPanel();// 中间组件面板
// 创建网袋布局对象
GridBagLayout gbl = new GridBagLayout();
// 将gbl网袋布局的对象设置到jpa面板中
jpa.setLayout(gbl);
// 注意事项:gbl仅仅知识设置布局,对于基础组件的摆放位置还需要借助GridBagLayout约束对象
// 创建约束对象
GridBagConstraints gbc = new GridBagConstraints();
gba.insets =new Insets(10, 0, , 0);上左下右 距离
// 新建一个标签
JLabel jla = new JLabel("账户");
JTextField jtfa = new JTextField(15);
JLabel jlb = new JLabel("密码");
JPasswordField jpfa = new JPasswordField(15);
// 开始布局
// 利用gbc约束对象抓取一个坐标
gbc.gridx = 0;
gbc.gridy = 0;
// 将抓取的坐标给jla标签
gbl.setConstraints(jla, gbc);
// 将jla标签放置jpa组件中
jpa.add(jla);
// 开始布局
// 利用gbc约束对象抓取一个坐标
gbc.gridx = 1;
gbc.gridy = 0;
// 将抓取的坐标给jtfa输入框
gbl.setConstraints(jtfa, gbc);
// 将jtfa标签放置jpa组件中
jpa.add(jtfa);
// 开始布局
// 利用gbc约束对象抓取一个坐标
gbc.gridx = 0;
gbc.gridy = 1;
// 将抓取的坐标给jtfa输入框
gbl.setConstraints(jlb, gbc);
// 将jtfa标签放置jpa组件中
jpa.add(jlb);
// 开始布局
// 利用gbc约束对象抓取一个坐标
gbc.gridx = 1;
gbc.gridy = 1;
// 将抓取的坐标给jtfa输入框
gbl.setConstraints(jpfa, gbc);
// 将jtfa标签放置jpa组件中
jpa.add(jpfa);
this.getContentPane().add(jpa);
this.setVisible(true);