主类用的卡片布局为主
代码如下
package student;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.awt.event.WindowStateListener;
import java.util.Enumeration;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.plaf.FontUIResource;
import utils.SqlUtils;
public class Guanliye extends JFrame {
public static long shiyoncs=1;
{//使用次数累加
shiyoncs++;
}
//整体内容面板和this
private JPanel contentPane;
private Guanliye frame=this;
private Font font=new Font("黑体",1,20);
// 对应功能选择栏 北部的面板
private JPanel bpanel;
// 主要数据面板放置在中间。卡片切换用的面板。
private JPanel zhuyao;
//卡片布局对象
CardLayout card;
// 北部面板功能按钮
private JButton xsxx;
private JButton czxs;
private JButton gly;
private JButton bz;
private JButton tuichu;
/**
* Launch the application.
* Launch the application.
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Guanliye frame = new Guanliye();
/*//设置显示
frame.setVisible(true);*/
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
* 且初始化
*/
public Guanliye() {
InitGlobalFont(font);
setTitle("学生管理系统");
//基础设置 初始化对象
contentPane = new JPanel();
bpanel=new JPanel();
zhuyao=new JPanel();
// 设置主布局为边框布局
contentPane.setLayout(new BorderLayout());
contentPane.add(bpanel,BorderLayout.NORTH);
contentPane.add(zhuyao,BorderLayout.CENTER);
// 设置主窗体内容面板
setContentPane(contentPane);
// 窗口关闭操作和位置
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(200, 150, 650,550);
//添加北部按钮面板(显示功能)
beibumianban();
this.setVisible(true);
//用户登录
// 直接要用户登录
Logpage denglu=new Logpage(this,"登录页");
//窗口设置显示。
denglu.setVisible(true);
if(denglu.getUser()==null) {
// 登录没有成功则退出
System.exit(0);
}
// 为功能内容面板添加要显示的各个功能面板
neirmbtj();
}
/**
* 统一设置字体,父界面设置之后,所有由父界面进入的子界面都不需要再次设置字体
*/
private static void InitGlobalFont(Font font) {
FontUIResource fontRes = new FontUIResource(font);
for (Enumeration<Object> keys = UIManager.getDefaults().keys();
keys.hasMoreElements(); ) {
Object key = keys.nextElement();
Object value = UIManager.get(key);
if (value instanceof FontUIResource) {
UIManager.put(key, fontRes);
}
}
}
/**
* 北部相应功能按钮的面板初始化。
* 以及绑定事件
*/
private void beibumianban() {
FlowLayout fl_cpanel = new FlowLayout();
// 设置组件中间间隔
// 垂直间距 y
fl_cpanel.setVgap(3);
// 水平间距 x
fl_cpanel.setHgap(18);
bpanel.setLayout(fl_cpanel);
bpanel.setBackground(Color.cyan);
Gnshijianchuli chuli=new Gnshijianchuli();
xsxx=new JButton("学生信息");
xsxx.addActionListener(chuli);
czxs=new JButton("查找学生");
czxs.addActionListener(chuli);
gly=new JButton("管理员信息");
gly.addActionListener(chuli);
bz=new JButton("帮助");
bz.addActionListener(chuli);
tuichu=new JButton("退出");
tuichu.addActionListener(chuli);
bpanel.add(xsxx);
bpanel.add(czxs);
bpanel.add(gly);
bpanel.add(bz);
bpanel.add(tuichu);
}
/**
* 添加卡片布局要切换的各个面板,
* 且调用事件监听处理方法实现面板切换。
*/
private void neirmbtj() {
//新建卡片布局对象
card=new CardLayout();
// 将主要内容展示面板设为卡片布局
zhuyao.setLayout(card);
// 添加要切换为的面板,并设置好面板名。因为根据面板名切换面板。
StudentInformation xsxxmb=new StudentInformation();
FindStudentP czxsmb=new FindStudentP();
HelpPanel bangzmb=new HelpPanel();
AdminInformation glyxxmb=new AdminInformation();
zhuyao.add(xsxxmb,"xsxinxi");
zhuyao.add(czxsmb,"chazhao");
zhuyao.add(glyxxmb,"guanliy");
zhuyao.add(bangzmb,"bangzhu");
// 退出按钮按了之后退出软件,所以不用切换。
}
// 实现各功能面板的切换
class Gnshijianchuli implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("学生信息")) {
// 调用show方法显示学生信息面板
card.show(zhuyao,"xsxinxi");
}else
if(e.getActionCommand().equals("查找学生")) {
card.show(zhuyao, "chazhao");
}else if(e.getActionCommand().equals("管理员信息")){
card.show(zhuyao, "guanliy");
}else if(e.getActionCommand().equals("帮助")) {
card.show(zhuyao, "bangzhu");
}else if(e.getActionCommand().equals("退出")) {
if(JOptionPane.showConfirmDialog(frame, "确定要退出吗?")==0) {
System.exit(0);
}
}
}
}
}
有问题可以私信或评论