You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

105 lines
4.6 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.WR.StudentMS.view;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.lang.reflect.InvocationTargetException;
public class MainFarme extends JFrame {
private JTabbedPane rightPanel; // 右侧内容显示区使用JTabbedPane
private JPanel leftPanel; // 左侧功能栏
private JLabel titleLabel;// 标题标签
public MainFarme() {
setTitle("学生管理系统");
setSize(800, 600); // 设置窗口大小
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置窗口关闭操作
setLayout(new BorderLayout()); // 设置布局管理器
// 初始化 leftPanel 和 rightPanel
leftPanel = new JPanel();
rightPanel = new JTabbedPane();
// 添加 leftPanel 和 rightPanel 到 JFrame
add(leftPanel, BorderLayout.WEST);
add(rightPanel, BorderLayout.CENTER);
// 设置 leftPanel 的布局管理器
leftPanel.setLayout(new BoxLayout(leftPanel, BoxLayout.Y_AXIS));
// 创建标题标签并设置华文行楷字体
titleLabel = new JLabel("学生管理系统", SwingConstants.CENTER);
Font customFont1 = new Font("华文行楷", Font.PLAIN, 24); // 您可以调整字体大小
titleLabel.setFont(customFont1);
setTitle("");
// 创建一个面板用于放置标题,并将其添加到顶部
JPanel titlePanel = new JPanel();
titlePanel.setLayout(new BorderLayout());
titlePanel.add(titleLabel, BorderLayout.CENTER);
add(titlePanel, BorderLayout.NORTH); // 添加标题面板到窗口北部
Font customFont = new Font("华文行楷", Font.PLAIN, 16);
// 添加功能按钮到左侧面板
JButton button1 = new JButton("修改个人密码");
button1.setFont(customFont);
addFunctionButton(button1.getText(), TAdminPanel.class);
JButton button2 = new JButton("专业信息管理");
button2.setFont(customFont);
addFunctionButton(button2.getText(), ZhuanyePanel.class);
JButton button3 = new JButton("班级信息管理");
button3.setFont(customFont);
addFunctionButton(button3.getText(), ClassmPanel.class);
JButton button4 = new JButton("课程信息管理");
button4.setFont(customFont);
addFunctionButton(button4.getText(), CoursemPanel.class);
JButton button5 = new JButton("学籍信息管理");
button5.setFont(customFont);
addFunctionButton(button5.getText(), RegistrationPanel.class);
JButton button6 = new JButton("成绩信息管理");
button6.setFont(customFont);
addFunctionButton(button6.getText(), TchengjiPanel.class);
JButton button7 = new JButton("奖惩信息管理");
button7.setFont(customFont);
addFunctionButton(button7.getText(), JiangchengPanel.class);
// 确保窗口在屏幕中间
setLocationRelativeTo(null);
}
private void addFunctionButton(String text, final Class<?> panelClass) {
JButton button = new JButton(text);
Font customFont = new Font("华文行楷", Font.PLAIN, 16);
button.setFont(customFont);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
// 使用 panelClass 创建实例并添加到 rightPanel
JComponent panel = (JComponent) panelClass.getDeclaredConstructor().newInstance();
rightPanel.addTab(text, panel);
rightPanel.setSelectedComponent(panel);
} catch (InstantiationException | IllegalAccessException |
NoSuchMethodException | InvocationTargetException ex) {
JOptionPane.showMessageDialog(MainFarme.this, "创建面板实例失败: " + ex.getMessage(), "错误", JOptionPane.ERROR_MESSAGE);
}
}
});
leftPanel.add(button); // 将按钮添加到 leftPanel
}
public static void main(String[] args) {
// 使用SwingUtilities.invokeLater确保GUI创建和更新在事件调度线程EDT上执行
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
// 创建MainFarme窗口实例并设置其可见性为true显示窗口
new MainFarme().setVisible(true);
}
});
}
}