⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 edutesting.java

📁 考试系统
💻 JAVA
字号:
import gui.GuidPanel;
import gui.PaperPanel;
import io.ObjectIO;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTextField;
import javax.swing.JTree;
import javax.swing.UIManager;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreeSelectionModel;

import paper.Paper;
import user.Student;
import user.Teacher;
import user.User;

/**
 * @author SpiritRain
 * @author student number: 0261097 fudan
 * 
 */
public class EduTesting extends JFrame {

	/**
	 * exit program 
	 */
	private final class ExitAdapter implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			System.exit(0);
		}
	}

	/**
	 * deal with login actions
	 */
	private final class LoginActionAdapter implements ActionListener {

		public void actionPerformed(ActionEvent e) {
			//remove login bar
			container.remove(userStateBar);
			container.add(new JTextField(20), BorderLayout.SOUTH);
			if (jCheckBoxUser.isSelected()) {
				user =
					new Teacher(
						jTextFieldName.getText(),
						jPasswordField.getPassword());
			} else {
				user =
					new Student(
						jTextFieldName.getText(),
						jPasswordField.getPassword());
			}

			//add user INFO label
			JLabel jLabel =
				new JLabel(
					user.getPermissionString() + "    Name:" + user.getName());
			guidPanel.set("Please choose a paper in the tree");
			jLabel.setBorder(BorderFactory.createLoweredBevelBorder());
			container.add(jLabel, BorderLayout.SOUTH);
			container.updateUI();
			jTreeLib.setEnabled(true);
			jTreeLib.addTreeSelectionListener(new TreeHandle());

		}
	}

	/**
	 * deal with tree actions
	 */
	private final class TreeHandle implements TreeSelectionListener {
		public void valueChanged(TreeSelectionEvent e) {
			DefaultMutableTreeNode node =
				(DefaultMutableTreeNode) e.getPath().getLastPathComponent();
			if (node.isLeaf()) {
				//read a paper
				Paper p =
					(Paper) ObjectIO.read(node.getUserObject().toString());
				paperPanel = new PaperPanel(user, p);

				//remove guid panel
				jSplitPaneMain.remove(jSplitPaneMain.getRightComponent());
				//add paper panel
				jSplitPaneMain.add(paperPanel);
			}
		}
	}

	/**
	 * start project
	 * @param args arguments
	 */
	public static void main(String[] args) {
		try {
			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
		} catch (Exception e) {
			e.printStackTrace();
		}
		new EduTesting();
	}
	private JPanel container;
	private GuidPanel guidPanel;
	private JCheckBox jCheckBoxUser;
	private JPasswordField jPasswordField;
	private JSplitPane jSplitPaneMain;
	private JTextField jTextFieldName;
	private JTree jTreeLib;
	private PaperPanel paperPanel;

	private User user;
	private JPanel userStateBar;

	/**
	 * Constructor EduTesting System and initiate the GUI 
	 */
	public EduTesting() {

		//init mainu bar
		JMenuBar jMenuBarMain = new JMenuBar();
		JMenu jMenuFile = new JMenu("File");
		JMenuItem jMenuFileExit = new JMenuItem("Exit");
		JMenu jMenuHelp = new JMenu("Help");
		JMenuItem jMenuHelpAbout = new JMenuItem("About");
		JMenuItem jMenuItemOpen = new JMenuItem("Open");

		this.setJMenuBar(jMenuBarMain);
		jMenuFileExit.addActionListener(new ExitAdapter());
		jMenuFile.add(jMenuItemOpen);
		jMenuFile.addSeparator();
		jMenuFile.add(jMenuFileExit);
		jMenuHelp.add(jMenuHelpAbout);
		jMenuBarMain.add(jMenuFile);
		jMenuBarMain.add(jMenuHelp);

		container = (JPanel) getContentPane();
		jSplitPaneMain = new JSplitPane();
		guidPanel = new GuidPanel();
		guidPanel.set("Please Login first.");
		jTreeLib = new JTree((TreeNode) ObjectIO.read("library.tree"));
		jTreeLib.setEnabled(false);
		jTreeLib.getSelectionModel().setSelectionMode(
			TreeSelectionModel.SINGLE_TREE_SELECTION);

		JScrollPane jScrollPaneLib = new JScrollPane(jTreeLib);
		jScrollPaneLib.setMinimumSize(new Dimension(80, 200));
		jScrollPaneLib.setPreferredSize(new Dimension(120, 200));

		jSplitPaneMain = new JSplitPane();
		jSplitPaneMain.add(jScrollPaneLib, JSplitPane.LEFT);
		jSplitPaneMain.add(guidPanel, JSplitPane.RIGHT);
		jSplitPaneMain.setOneTouchExpandable(true);
		jSplitPaneMain.setDividerSize(8);

		container.add(jSplitPaneMain, BorderLayout.CENTER);

		userStateBar = new JPanel();
		userStateBar.setBorder(BorderFactory.createLoweredBevelBorder());
		userStateBar.add(new JLabel("Name:"));
		jTextFieldName = new JTextField("SpiritRain", 10);
		userStateBar.add(jTextFieldName);
		userStateBar.add(new JLabel("Password:"));
		jPasswordField = new JPasswordField("000000", 15);
		userStateBar.add(jPasswordField);
		jCheckBoxUser = new JCheckBox("Teacher");
		userStateBar.add(jCheckBoxUser);

		JButton jButtonLogin = new JButton("Login");
		jButtonLogin.addActionListener(new LoginActionAdapter());
		userStateBar.add(jButtonLogin);

		container.add(userStateBar, BorderLayout.SOUTH);
		this.setSize(800, 600);
		this.setTitle("Education Testiong System");

		//center the main form
		Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
		Dimension frameSize = this.getSize();
		if (frameSize.height > screenSize.height) {
			frameSize.height = screenSize.height;
		}
		if (frameSize.width > screenSize.width) {
			frameSize.width = screenSize.width;
		}
		this.setLocation(
			(screenSize.width - frameSize.width) / 2,
			(screenSize.height - frameSize.height) / 2);
		this.setVisible(true);

	}

	//Overridden so we can exit when window is closed
	protected void processWindowEvent(WindowEvent e) {
		super.processWindowEvent(e);
		if (e.getID() == WindowEvent.WINDOW_CLOSING) {
			System.exit(0);
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -