📄 edutesting.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 + -