GUI的三种基本布局
流式布局
Stream Layout
public static void main(String[] args) {
// TODO 自动生成的方法存根
Frame windows=new Frame();
windows.setLayout(new FlowLayout());//new FlowLayout() 可以控制 按钮左右
Button button1=new Button("按钮一");
Button button2=new Button("按钮2");
Button button3=new Button("按钮3");
windows.add(button1);
windows.add(button2);
windows.add(button3);
//windows.setSize(200,200);手动 窗口大小
windows.pack();//最优窗口大小
windows.setVisible(true);
}
东西南北中
Aroud Layuot
public class AroudLayout {
public static void main(String[] args) {
Frame windows=new Frame("东西南北布局" );
Button East=new Button("East 东");
Button West=new Button("West 西");
Button north=new Button("north 北");
Button south=new Button("south 南");
Button center=new Button("center 中");
windows.add(East,BorderLayout.EAST);
windows.add(West,BorderLayout.WEST);
windows.add(north,BorderLayout.NORTH);
windows.add(south,BorderLayout.SOUTH);
windows.add(center,BorderLayout.CENTER);
windows.pack();
windows.setVisible(true);
}
}
表格 布局
From Layout
public class FromLayout {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Frame windows=new Frame("表格布局");
Button button1=new Button("表格布局");
Button button2=new Button("");
Button button3=new Button("");
Button button4=new Button("");
Button button5=new Button("");
Button button6=new Button("");
windows.setLayout(new GridLayout(2,3));
windows.add(button1);
windows.add(button2);
windows.add(button3);
windows.add(button4);
windows.add(button5);
windows.add(button6);
windows.pack();
windows.setVisible(true);
}
}
练习
package guiLayout;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Panel;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JPanel;
public class LayoutWork {
public static void main(String[] args) {
Frame windows=new Frame("GUI 布局作业" );
windows.setLayout(new GridLayout(2,1));
windows.setSize(300,300);
windows.setLocation(100,100);
windows.setBackground(Color.BLUE);
windows.setVisible(true);
//把windows 界面分2个面板
//再继续细分
Panel jp1=new Panel(new BorderLayout());
Panel jp2=new Panel(new GridLayout(1,2));
Panel jp3=new Panel(new BorderLayout());
Panel jp4=new Panel(new GridLayout(2,2));
//面板一
jp1.add(new Button("上面板1"),BorderLayout.WEST);
jp1.add(new Button("上面板2"),BorderLayout.EAST);
jp2.add(new Button("上面板3"));
jp2.add(new Button("上面板4"));
jp1.add(jp2,BorderLayout.CENTER);
//面板二
jp3.add(new Button("下面板1"),BorderLayout.WEST);
jp3.add(new Button("下面板2"),BorderLayout.EAST);
for(int i=2;i<6;i++){
jp4.add(new Button("下面板"+i));
}
jp3.add(jp4,BorderLayout.CENTER);
windows.add(jp1);
windows.add(jp3);
//监听器
windows.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
总结
- Frame是一个大窗口
- panel不能单独存在必须添加到一个容器中
jp1.add(new Button("上面板1"),BorderLayout.WEST);
jp1.add(new Button("上面板2"),BorderLayout.EAST);
- 布局样式
流式(FlowLayout)、东西南北中(BorderLayout) 、表格(GridLayout)
-
背景 (setBackground)、大小 (setSize)、初始位子(setLocation)、界面可见性(setVisible)、
监听(addWindowListener);