学习总结
布局管理器
一.FlowFayout(流式布局管理器)


(1)组件按照加入的先后顺序按照设置的对齐方式从左向右排列,一行排满到下一行开始继续排列。
(2)默认的对齐方式是居中对齐,默认的水平和垂直间隙是5个像素。

package Txjm;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Demo1 {
    public static void main(String[] args) {
    	JFrame frame = new JFrame("Welcome To MLDN");
    	frame.setLayout(new FlowLayout(FlowLayout.CENTER,3,3));
    	JButton but = null;
    	for(int i=0;i<12;i++) {
    		but= new JButton("科目-"+i);
    		frame.add(but);
    	}
    	frame.setSize(380, 223);
    	frame.setVisible(true);
    }
}

二、BorderLayout(边界布局管理器) (1)容器划分为东、西、南、北、中五个区域,每个区域只能放置一个组件。 ```C package Txjm; import java.awt.BorderLayout; import javax.swing.JButton; import javax.swing.JFrame; public class Demo2 { public static void main(String[] args) { JFrame frame = new JFrame("Welcome To MLDN"); frame.setLayout(new BorderLayout(3,3)); frame.add(new JButton("电影"),BorderLayout.EAST); frame.add(new JButton("电视剧"),BorderLayout.WEST); frame.add(new JButton("音乐"),BorderLayout.SOUTH); frame.add(new JButton("综艺"),BorderLayout.NORTH); frame.add(new JButton("娱乐"),BorderLayout.CENTER); frame.setSize(380, 223); frame.setVisible(true); } }
![](https://img2018.cnblogs.com/blog/1581766/201911/1581766-20191108173107060-1681037767.png)
```C
public File InputStream(File file) throws FileNotFoundException
三、GridLayout(表格布局管理器) (1)容器的空间划分成M×N列的网格区域, 每个区域只能放置一个组件。 (2)表格布局行优先 ```C package Txjm; import java.awt.GridLayout; import javax.swing.JButton; import javax.swing.JFrame; public class Demo3 { public static void main(String[] args) { JFrame frame = new JFrame("Welcome To MLDN"); frame.setLayout(new GridLayout(3,5,3,3)); JButton but = null; for(int i=0;i<12;i++) { but= new JButton("教室-"+i); frame.add(but); } frame.pack(); frame.setVisible(true); } }
![](https://img2018.cnblogs.com/blog/1581766/201911/1581766-20191108173655622-351045252.png)

<font  color=#000000 size=5>四、CardLayout(卡片布局管理器)</font>
<font  color=#000000 size=3>(1)如同一叠牌,每个牌对应一个组件,但每次只能显示其中的一张牌。适用于在一个空间中防止多个组件的情况
```C
  package Txjm;
import java.awt.CardLayout;
import java.awt.Container;
import javax.swing.JLabel;
import javax.swing.JFrame;
public class Demo4 {
    public static void main(String[] args) {
    	JFrame frame = new JFrame("Welcome To MLDN");
    	Container cont=frame.getContentPane();
    	CardLayout card=new CardLayout();
    	frame.setLayout(card);
        cont.add(new JLabel("愿你也有幸",JLabel.CENTER),"first");
        cont.add(new JLabel("拥有独特的才华",JLabel.CENTER),"second");
        cont.add(new JLabel("供养你一世的梦想",JLabel.CENTER),"third");
        cont.add(new JLabel("将来的岁月",JLabel.CENTER),"fourth");
        cont.add(new JLabel("愿所有人的前方都一路坦荡。",JLabel.CENTER),"fifth");
    	frame.setSize(380, 223);
    	frame.setVisible(true);
    	card.show(cont, "first");
    	for(int i=0;i<5;i++) {
    		try {
    			Thread.sleep(1000);
    		}catch(Exception e){
        	}
    		card.next(cont);
    		}
    }
}

五、绝对定位
(1)通过设置绝对坐标的方式完成布局

package Txjm;
import javax.swing.JLabel;
import javax.swing.JFrame;
import javax.swing.JButton;
public class Demo5 {
    public static void main(String[] args) {
    	JFrame frame = new JFrame("登录界面");
    	frame.setLayout(null);
     	JLabel title = new JLabel("教务系统");
    	JLabel userLable = new JLabel("用户名:");
    	JLabel pswLable = new JLabel("密码:");
    userLable.setBounds(40, 100, 120, 25);
    pswLable.setBounds(40, 150, 120, 25);
    title.setBounds(100, 50, 150, 20);
    frame.add(userLable);
    frame.add(pswLable);
    frame.add(title);
    frame.setSize(400, 300);
    frame.setVisible(true);
    }
}

六、错误示例


代码还是存在问题,特别是绝对定位的掌握。坐标的四位数分别什么意思有点忘了,所以调了好久。还有cardLayout关于图片的导入依然存在问题。
还待解决吧。