swing常用的控件+三种布局方式

简介:

窗体布局

          目的:将窗体中的基础组件按照特定的布局方式进行摆放

          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    文件选择器

     中间组件
                      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);

你可能感兴趣的:(javaswing,wpf,html,c#,swing)