学习总结
布局管理器
一.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关于图片的导入依然存在问题。
还待解决吧。