Swing学习日记3


今天是自学Swing 的第三天

分析

布局

绝对布局

绝对布局只需要null就行,布局之后组件需要给出位置,一但想修改得改代码

package swing;

import java.awt.Container;

import javax.swing.JButton;
import javax.swing.JFrame;
//绝对布局的应用 组件不会随着窗体改变而改变
public class class6 extends JFrame {
	public class6() {
		setBounds(100,100,300,300);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		Container c=getContentPane();
		c.setLayout(null);//设置容器为绝对布局,用坐标达到控制组件的位置
		JButton button1=new JButton("按钮1"),button2=new JButton("按钮2");
		button1.setBounds(20, 20, 80, 50);
		button2.setBounds(100, 100, 80, 50);
		c.add(button1);
		c.add(button2);
		setVisible(true);
	}
	public static void main(String[] args) {
		new class6();
	}
}

运行如下:优势是可以放任何地方,但位置也就固定了
绝对布局的结果

流布局

从左到右,默认居中对齐使用方式new FlowLayout()里面可以有参数
当窗体改变时,里面的内容组件也会跟着改变

package swing;

import java.awt.Container;
import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;

//流布局 按钮
public class class7 extends JFrame{
	public class7() {
		setBounds(100,100,300,300);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		Container c=getContentPane();
		c.setLayout(new FlowLayout(FlowLayout.RIGHT,10,10));//设置流布局默认居中 里面有三个参数
		
		/*1.  c.setLayout(new FlowLayout(FlowLayout.LEFT));设置左对齐
		 * 2. 水平参数
		 * 3. 垂直参数
		 */
		for(int i=0;i<5;i++) {
			JButton button=new JButton("按钮"+i);
			button.setSize(80,50);
			c.add(button);
		}
		
		setVisible(true);
	}
	public static void main(String[] args) {
		new class7();
	}
}

这里是右对齐且参数为10,10
流右布局

边界布局

package swing;

import java.awt.BorderLayout;
import java.awt.Container;

import javax.swing.JButton;
import javax.swing.JFrame;
//边界布局  分为东南西北中五个布局 布局位置不会改变大小会随着窗体改变
public class class8	extends JFrame {
	public class8() {
		setBounds(100, 100, 300, 300);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		Container c=getContentPane();
		c.setLayout(new BorderLayout());//设置容器边界布局 不必在里面设置参数
		JButton button1=new JButton("东");
		JButton button2=new JButton("南");
		JButton button3=new JButton("西");
		JButton button4=new JButton("北");
		JButton button5=new JButton("中");
		c.add(button1,BorderLayout.EAST);
		c.add(button2,BorderLayout.SOUTH);
		c.add(button3,BorderLayout.WEST);
		c.add(button4,BorderLayout.NORTH);
		c.add(button5,BorderLayout.CENTER);
		//c.add(new JButton("覆盖"),BorderLayout.CENTER);覆盖中间的按钮
		setVisible(true);
	}
	public static void main(String[] args) {
		new class8();
	}
}

边界布局

网格布局

package swing;

import java.awt.Container;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
//网格布局
public class class9 extends JFrame{
	public class9() {
		setBounds(100, 100, 500, 500);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		Container c=getContentPane();
		c.setLayout(new GridLayout(4, 5, 10, 10));//行 列 水平间距 垂直间距
		for(int i=0;i<20;i++) {
		JButton button=new JButton("按钮"+i);
		button.setSize(80,60);
		c.add(button);
		}
		setVisible(true);
	}
	public static void main(String[] args) {
		new class9();
	}
}

在这里插入图片描述
与流布局的区别:网格布局改变窗口内容布局还是那样,只是变大变小,忘记的可以看看我上面写的;而流布局改变窗体内容会跟着改变对齐。

网格组布局

package swing;

import java.awt.Color;
import java.awt.Container;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

//网格组布局
public class class10 extends JFrame{
	public class10() {
		setBounds(100, 100, 800, 800);
		setLocationRelativeTo(null);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		Container c=getContentPane();
		c.setLayout(new GridBagLayout());//创建网格组布局
		JButton button1=new JButton("按钮1");
		for(int i=0;i<10;i++) {
			GridBagConstraints gx=new GridBagConstraints();
			gx.gridx=0;
			gx.gridy=i;
			JButton button=new JButton("按钮"+i);
			c.add(button,gx);
			
			GridBagConstraints gy=new GridBagConstraints();
			gy.gridx=i;
			gy.gridy=0;
			JButton buttonn=new JButton("按钮"+i);
			c.add(buttonn,gy);
		}
		
		
		
		//第一个组件
		GridBagConstraints g1=new GridBagConstraints();
		g1.gridx=1;
		g1.gridy=1;
		
		c.add(button1,g1);//第一行第一列 记得设置网格的格式
		//第二个组件
		GridBagConstraints g2=new GridBagConstraints();
		JButton button2=new JButton("按钮2");
		g2.gridx=2;
		g2.gridy=2;
		g2.gridheight=2;//可以设置按钮占几行几列  根据结果图看很明显按钮占两行两列
		g2.gridwidth=2;
		c.add(button2,g2);
		//第三个组件
		GridBagConstraints g3=new GridBagConstraints();
		g3.gridx=4;
		g3.gridy=4;
		g3.gridheight=3;
		g3.gridwidth=3;
		g3.fill=GridBagConstraints.BOTH;//全部填充
		JButton button3=new JButton("按钮3");
		c.add(button3,g3);
		
		
		//fill是组件对单元格的填充布局
		//anchor可以定义单元格所占组件的方位
		GridBagConstraints g4=new GridBagConstraints();//单元格
		g4.gridx=7;
		g4.gridy=7;
		g4.gridheight=2;
		g4.gridwidth=2;
		g4.anchor=GridBagConstraints.EAST;
	
		JButton button4=new JButton("按钮4");
		c.add(button4,g4);//将组件g4插入单元格中且为both
		g4.fill=GridBagConstraints.BOTH;
		g4.anchor=GridBagConstraints.CENTER;
		JPanel panel =new JPanel();
		panel.setBackground(Color.green);
		c.add(panel,g4);
		
		//第五个组件
		//inset的使用 它是一个类 四个属性距离单元格的距离有点类似margin
		GridBagConstraints g5=new GridBagConstraints();
		g5.gridx=1;
		g5.gridy=8;
		g5.gridheight=2;
		g5.gridwidth=2;
		JButton button5=new JButton("按钮5");
		g5.insets=new Insets(5,5,5,5);//到四个边的距离
		c.add(button5,g5);
		//ipadx ipady 设置组件大小
		//weightx weighty表示一个单元格的最大和最小的大小 当改变窗口的时候会有很明显的效果,这里我先省略了
		
		setVisible(true);
	}
	public static void main(String[] args) {
		new class10();
	}
}

在这里插入图片描述
博主心情
敲了几个小时的代码有点累了,昨天上课居然忘记签到了,果然和朋友出去吃饭就会忘记一些事情,学习和聚会只能选择一个,哈哈哈,加油把越容易得到的越不会珍惜,所以真的觉得有些朋友真的对我很好,谢谢大家了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值