了解Java图形界面程序的基本结构;掌握Java布局管理和常用组件的使用;掌握Java事件处理机制。
实验内容
编写程序,将前面课程所编写的档案管理系统改编为图形用户界面。要求程序界面选用合适的布局,综合使用菜单、按钮、文本框、密码框、下拉列表、文件对话框等组件,实现良好的人机接口。
本次代码沿用第三次中的User.java Administrator.java Operator.java Browser.java DataProcessing.java和Doc.java
所以,在此仅对新的文件进行整理和发布。
需要运行的主程序
public class WinMain {
public static void main(String args[]) {
LoginWindow window=new LoginWindow();
window.loginFrame();
}
}
登录窗口界面
import java.awt.Font;
import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.sql.SQLException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;
@SuppressWarnings("serial")
public class LoginWindow extends JFrame{
JTabbedPane tabbedPane;
public void loginFrame() {
JFrame frame=new JFrame();
frame.setTitle("系统登录");
frame.setSize(380,300);
frame.setLocationRelativeTo(null);
frame.setResizable(false);
frame.setLayout(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel L1=new JLabel("账号:");
JTextField te1=new JTextField(25);
JLabel L2=new JLabel("密码:");
JPasswordField te2=new JPasswordField(25);
te2.setEchoChar('*');
L1.setFont(new Font("黑体",Font.PLAIN,18));
L1.setSize(50,30);
L1.setBounds(5+30,50,50,30);
te1.setFont(new Font("黑体",Font.PLAIN,18));
te1.setSize(250,30);
te1.setBounds(5+80,50,250,30);
L2.setFont(new Font("黑体",Font.PLAIN,18));
L2.setSize(50,30);
L2.setBounds(5+30,100,50,30);
te2.setFont(new Font("黑体",Font.PLAIN,18));
te2.setSize(250,30);
te2.setBounds(5+80,100,250,30);
frame.add(L1);
frame.add(te1);
frame.add(L2);
frame.add(te2);
JButton B1=new JButton("登录");
JButton B2=new JButton("退出");
B1.setSize(100,50);
B1.setBounds((380-100-5)/2-60,(300-50-30)/2+50,100,50);
B2.setSize(100,50);
B2.setBounds((380-100-5)/2+60,(300-50-30)/2+50,100,50);
frame.add(B1);
frame.add(B2);
B1.addActionListener(new ButtonHandler(frame,te1,te2));
B2.addActionListener(new ButtonHandler(frame));
frame.setVisible(true);
}
public class ButtonHandler implements ActionListener{
public JTextField te1=new JTextField();
public JPasswordField te2=new JPasswordField();
public JFrame frame=new JFrame();
ButtonHandler(JFrame frame){
this.frame=frame;
}
ButtonHandler(JFrame frame,JTextField te1,JPasswordField te2) {
this.frame=frame;
this.te1=te1;
this.te2=te2;
}
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand()=="登录") {
String name=te1.getText();
String password=String.valueOf(te2.getPassword());
try {
if(DataProcessing.searchUser(name)!=null) {
if(DataProcessing.search(name ,password)!=null) {
frame.dispose();
MenuWindow menuWindow=new MenuWindow();
menuWindow.showMenu(name);
addWindowListener(new WindowAdapter() {
@SuppressWarnings("unused")
public void WindowClosing(WindowEvent e2) {
DataProcessing.disconnectFromDatabase();
}
});
}
else {
JOptionPane.showMessageDialog(null, "密码错误", "温馨提示", JOptionPane.ERROR_MESSAGE);
}
}
else {
JOptionPane.showMessageDialog(null, "账号不存在", "温馨提示", JOptionPane.ERROR_MESSAGE);
}
} catch (HeadlessException e1) {
e1.printStackTrace();
} catch (SQLException e1) {
e1.printStackTrace();
}
}
else {
frame.dispose();
}
}
}
}
菜单界面
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
public class MenuWindow {
public void showMenu(String name) {
JFrame frame=new JFrame();
frame.setTitle("菜单界面");
frame.setSize(1600,1200);
frame.setLocationRelativeTo(null);
frame.setResizable(false);
frame.setLayout(null);
JMenuBar menu=new JMenuBar();
JMenu menu1=new JMenu("用户管理");
JMenu menu2=new JMenu("文件管理");
JMenu menu3=new JMenu("密码管理");
JMenuItem item1=new JMenuItem("添加用户");
JMenuItem item2=new JMenuItem("修改用户");
JMenuItem item3=new JMenuItem("删除用户");
JMenuItem item4=new JMenuItem("上传文件");
JMenuItem item5=new JMenuItem("下载文件");
JMenuItem item6=new JMenuItem("修改密码");
String role = null;
try {
role=DataProcessing.searchUser(name).getRole();
} catch (SQLException e) {
e.printStackTrace();
}
if(role.equals("administrator")) {
menu1.setEnabled(true);
menu2.setEnabled(true);
menu3.setEnabled(true);
item1.setEnabled(true);
item2.setEnabled(true);
item3.setEnabled(true);
item4.setEnabled(false);
item5.setEnabled(true);
item6.setEnabled(true);
}
else if(role.equals("operator")){
menu1.setEnabled(false);
menu2.setEnabled(true);
menu3.setEnabled(true);
item1.setEnabled(false);
item2.setEnabled(false);
item3.setEnabled(false);
item4.setEnabled(true);
item5.setEnabled(true);
item6.setEnabled(true);
}
else if(role.equals("browser")){
menu1.setEnabled(false);
menu2.setEnabled(true);
menu3.setEnabled(true);
item1.setEnabled(false);
item2.setEnabled(false);
item3.setEnabled(false);
item4.setEnabled(false);
item5.setEnabled(true);
item6.setEnabled(true);
}
menu1.add(item1);
menu1.add(item2);
menu1.add(item3);
menu2.add(item4);
menu2.add(item5);
menu3.add(item6);
menu.add(menu1);
menu.add(menu2);
menu.add(menu3);
menu.setSize(195,30);
menu.setBounds(0,0,195,30);
menu.setVisible(true);
frame.add(menu);
item1.addActionListener(new MenuAction(name))