borderLayout.setVgap(10);
getContentPane().setLayout(borderLayout); setTitle(\图书馆管理系统登录\); setBounds(100, 100, 285, 194);
final JPanel panel = new JPanel(); panel.setLayout(new BorderLayout());
panel.setBorder(new EmptyBorder(0, 0, 0, 0)); getContentPane().add(panel);
final JPanel panel_2 = new JPanel();
final GridLayout gridLayout = new GridLayout(0, 2); gridLayout.setHgap(5); gridLayout.setVgap(20);
panel_2.setLayout(gridLayout); panel.add(panel_2);
final JLabel label = new JLabel();
label.setHorizontalAlignment(SwingConstants.CENTER); label.setPreferredSize(new Dimension(0, 0)); label.setMinimumSize(new Dimension(0, 0)); panel_2.add(label);
label.setText(\用 户 名:\);
username = new JTextField(20);
username.setPreferredSize(new Dimension(0, 0)); panel_2.add(username);
final JLabel label_1 = new JLabel();
label_1.setHorizontalAlignment(SwingConstants.CENTER); panel_2.add(label_1);
label_1.setText(\密 码:\);
password = new JPasswordField(20);
password.setDocument(new MyDocument(6)); password.setEchoChar('*');//设置密码框的回显字符 password.addKeyListener(new KeyAdapter() { public void keyPressed(final KeyEvent e) { if (e.getKeyCode() == 10) login.doClick(); } });
panel_2.add(password);
}
final JPanel panel_1 = new JPanel(); panel.add(panel_1, BorderLayout.SOUTH);
login=new JButton();
login.addActionListener(new BookLoginAction());
login.setText(\登录\); panel_1.add(login); reset=new JButton();
reset.addActionListener(new BookResetAction());
reset.setText(\重置\); panel_1.add(reset);
final JLabel tupianLabel = new JLabel();
ImageIcon loginIcon=CreatecdIcon.add(\); tupianLabel.setIcon(loginIcon); tupianLabel.setOpaque(true);
tupianLabel.setBackground(Color.GREEN);
tupianLabel.setPreferredSize(new Dimension(260, 60)); panel.add(tupianLabel, BorderLayout.NORTH); //
setVisible(true); setResizable(false);
//setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
2.为方便在登陆验证时取值与传值,需要创建一个对应于tb_operator表字段的JavaBean,这个类除了以数据表字段命名的成员变量之外,还创建与成员变量相对应的setXXX(),getXXX()方法,关键代码如下: public class Operater { private String id; private String name;
private String grade; private String password; public String getGrade() { return grade; }
public void setGrade(String grade) { this.grade = grade; }
}
public String getId() { return id; }
public void setId(String id) { this.id = id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String getPassword() { return password; }
public void setPassword(String password) { this.password = password; }
3:为了在其他窗体中取得当前登陆用户名称,需要在BookLoginIFrame.java类中创建一个Operator类型的成员变量,用户创建对应的setXXX()与getXXX()方法,关键代码如下: public static Operater getUser() { return user; }
public static void setUser(Operater user) { BookLoginIFrame.user = user; } }
4:分别为\登陆\按钮与\重置\按钮设置监听事件。关键代码如下: class BookLoginAction implements ActionListener {
public void actionPerformed(final ActionEvent e) {
user = Dao.check(username.getText(), password.getText()); if (user.getName() != null) {
try {
Library frame = new Library(); frame.setVisible(true);
BookLoginIFrame.this.setVisible(false); } catch (Exception ex) { ex.printStackTrace(); }
} else {
JOptionPane.showMessageDialog(null, \只有管理员才可以登录!
\); }
username.setText(\); password.setText(\); } }
5.在Dao类中创建登陆验证方法,在此方法中查询文本框中输入字符串是否与操作员数据表数据匹配,关键代码如下:
public static Operater check(String name, String password) { int i = 0; Operater operater=new Operater();
String sql = \ + name + \ + password + \; ResultSet rs = Dao.executeQuery(sql); try {
while (rs.next()) {
String names = rs.getString(1);
operater.setId(rs.getString(\));
operater.setName(rs.getString(\)); operater.setGrade(rs.getString(\));
operater.setPassword(rs.getString(\)); if (names != null) { i = 1; } }
} catch (Exception e) { e.printStackTrace(); }
Dao.close();
return operater; }
图书馆信息管理模块:
图书馆信息管理模块主要包括图书信息添加,图书信息修改两个功能。在图书馆信息添加窗体中管理员可以录入图书相关信息,包括名称,类别,图书条形码
等。
图书信息添加窗体
图书信息修改窗体
图书信息管理模块实现过程:
1.首先创建图书信息添加窗体,关键代码如下:
public class BookAddIFrame extends JInternalFrame { private JComboBox publisher; private JTextField price;
private JFormattedTextField pubDate; private JTextField translator;