布局管理器:确定组件的摆放位置,顺序,大小等
BorderLayOut 边界布局,把容器分为东西南北中五个部门,每一个部分只能摆放一个组件,这是顶级容器的默认的布局管理器
该容器组件进行,并调整其大小(会自动拉申组件,一般情况下是在五个方向上摆放中间容器,再到中间容器中添加需要的组件)
getContentPane()方法返回的容器默认的布局管理器就是边界布局
FlowLayOut 流式布局 组件从左往右顺序摆放,该布局管理器不会改变组件的默认大小 它是JPanel的默认布局管理器
空布局(要调用容器的setLayout方法,并传递null ),此时添加到容器中的组件必需调用setBounds(int width,int height,int x ,inty )方法确定组件自身摆放在容器的哪个位置
注:1)在边界布局管理器的某个方向要摆放多个组件,可以先添加一个中间容器(Japnel),再把组件添加到中间容器中.
2)改变某个容器的布局管理,可以调用容器的setLayout(LayoutManager )方法传入一个布局管理器类对象
CardLayout 卡片布局管理器 (多个中间容器添加在卡片布局管理器的容器中)
注:1. 调用卡片布管理器的容器(JPanel) 的add方法必需给两个参数 add(Component c,String name) ,
第二个参数用于标识添加到卡片布局的容器,用于在监听器根据name调出相应子容器.
2.在监听器中 要调用CardLayout的show(Container c,String name)方法用于显示子容器.
应用程序的主界面,一般是用BorderLayout(东西南北中)
流式布局默认将组件从左往右摆放,将按钮从上往下摆,可以按钮的容器(JPanle) 改成空布局
所有的容器,组件都有setPreferredSize(new Dimension(int 宽度,int 高度))用于设置组件或容器的首选的宽度高度
package com.view;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;
import com.listener.ChangPanelListener;
import java.awt.FlowLayout;
import java.awt.CardLayout;
public class MainFrame extends JFrame {
private JPanel contentPane;
JPanel carLayoutPanel = new JPanel();//卡片布局的容器CardLayout cardLayout = new CardLayout(0, 0);
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
MainFrame frame = new MainFrame();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public MainFrame() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
JPanel panel = new JPanel();
FlowLayout flowLayout = (FlowLayout) panel.getLayout();
flowLayout.setAlignment(FlowLayout.LEFT);
contentPane.add(panel, BorderLayout.NORTH);
JButton btnXFKD = new JButton("消费开单");
panel.add(btnXFKD);
JButton btnHYGL = new JButton("会员管理");
panel.add(btnHYGL);
contentPane.add(carLayoutPanel, BorderLayout.CENTER);
carLayoutPanel.setLayout(cardLayout);
JPanel jpXFKD = new JPanel();
jpXFKD.setBackground(Color.GREEN);
carLayoutPanel.add(jpXFKD, "xfkd");
HyglJPanel jpHYGL = new HyglJPanel(this);
//jpHYGL.setBackground(Color.BLUE);
carLayoutPanel.add(jpHYGL, "hygl");
//注册监听器
ChangPanelListener lis = new ChangPanelListener(this);
btnHYGL.addActionListener(lis);
btnXFKD.addActionListener(lis);
}
public JPanel getCarLayoutPanel() {
return carLayoutPanel;
}
public CardLayout getCardLayout() {
return cardLayout;
}
}