圖書管理系統之登入介面實現
阿新 • • 發佈:2019-01-26
實現效果圖如下,通過輸入的使用者名稱連結到資料庫並判斷該使用者是否存在,存在與否都會給出提示,若存在點選登入時判斷密碼是否正確,若正確則登入成功,否則登入失敗。
其中使用者名稱輸入框用到的監聽較多,有Actionlistener、Mouselistener、Focuslistener、Keylistener,目的是為了更好的處理兩個提示效果。
原始碼如下:
package pdsu.bbm.view; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Font; import java.awt.Graphics; import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JTextField; import pdsu.bbm.dao.UsersDao; import pdsu.bbm.model.Users; public class Login extends JFrame implements ActionListener, MouseListener,KeyListener,FocusListener{ JLabel label1, label2, label3, name_label, name_errorLabel, label4; JButton button1, button2; public static JTextField textField=new JTextField();; JPasswordField passwordField; Dimension dimension = new Dimension(800, 500); ImageIcon image = new ImageIcon("image/background.jpg"); Image icon = new ImageIcon("image/icon.png").getImage(); Users users = new Users(); public Login() { init(); setUndecorated(true); setSize(dimension); setTitle("圖書管理系統—登入介面"); setIconImage(icon); setLocationRelativeTo(null); setVisible(true); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); } private void init() { Font f = new Font("宋體", Font.BOLD, 20); int x = 260, y = 190; BJpanl panel = new BJpanl(dimension, image.getImage()); panel.setLayout(null); label1 = new JLabel("使用者名稱:"); label1.setBounds(x, y, 80, 40); label1.setFont(f); label2 = new JLabel("密 碼:"); label2.setBounds(x, y + 60, 110, 40); label2.setFont(f); label3 = new JLabel("圖書借閱系統"); label3.setFont(new Font("宋體", Font.BOLD, 50)); label3.setBounds(x + 0, y - 240, 500, 200); name_label = new JLabel(new ImageIcon("image/ok.png")); name_label.setBounds(x + 230, y - 6, 50, 50); name_label.setVisible(false); name_errorLabel = new JLabel(new ImageIcon("image/error.png")); name_errorLabel.setBounds(x + 230, y - 6, 50, 50); name_errorLabel.setVisible(false); label4 = new JLabel("使用者登入"); label4.setBounds(x + 60, y - 170, 300, 200); label4.setFont(new Font("黑體", Font.BOLD, 35)); textField = new JTextField(); textField.setBounds(x + 80, y + 8, 150, 30); textField.addMouseListener(this); textField.addKeyListener(this); textField.addFocusListener(this); passwordField = new JPasswordField(); passwordField.setBounds(x + 80, y + 66, 150, 30); passwordField.addMouseListener(this); passwordField.addFocusListener(this); button1 = new JButton("登入"); button1.setBounds(x + 30, y + 150, 80, 40); button1.setFont(f); button2 = new JButton("重置"); button2.setFont(f); button2.setBounds(x + 150, y + 150, 80, 40); button1.addActionListener(this); button2.addActionListener(this); panel.add(label1); panel.add(label2); panel.add(label3); panel.add(name_label); panel.add(name_errorLabel); panel.add(label4); panel.add(textField); panel.add(passwordField); panel.add(button1); panel.add(button2); add(panel, BorderLayout.CENTER); } public static void main(String[] args) { new Login(); } public void actionPerformed(ActionEvent e) { if (e.getSource() == button1) { String name = textField.getText().toString(); String password = new String(passwordField.getPassword()); users.setName(name); // users.setPassword(password); if (name.equals("")) { JOptionPane.showMessageDialog(this, "請輸入使用者名稱", "提示", JOptionPane.ERROR_MESSAGE); name_label.setVisible(false); } else if (password.equals("")) { JOptionPane.showMessageDialog(this, "請輸入密碼", "提示", JOptionPane.ERROR_MESSAGE); } else if ((UsersDao.checkName(users)) != null) { users.setPassword(password); if (UsersDao.check(users) != null) { dispose(); new MainWindow(); } else { JOptionPane.showMessageDialog(this, "密碼錯誤"); passwordField.setText(""); } } else { JOptionPane.showMessageDialog(this, "不存在"); textField.setText(""); passwordField.setText(""); name_label.setVisible(false); name_errorLabel.setVisible(false); } } if (e.getSource() == button2) { textField.setText(""); passwordField.setText(""); name_label.setVisible(false); name_errorLabel.setVisible(false); } } public void mouseClicked(MouseEvent e) { String name = textField.getText().toString(); users.setName(name); if (e.getSource() == passwordField) { if (!textField.equals("")) { if ((UsersDao.checkName(users)) != null) { name_label.setVisible(true); } else { name_label.setVisible(false); name_errorLabel.setVisible(true); } } } } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } class BJpanl extends JPanel { Dimension d; Image image; public BJpanl(Dimension d, Image image) { this.d = d; this.image = image; } protected void paintComponent(Graphics g) { super.paintComponent(g); g.drawImage(image, 0, 0, d.width, d.height, null); } } public void keyPressed(KeyEvent e) { if(e.getSource()==textField){ if(e.getKeyCode()==KeyEvent.VK_BACK_SPACE){ if(textField.getText().length()<2||textField.getText().equals("")){ name_errorLabel.setVisible(false); name_label.setVisible(false); } } } } public void keyReleased(KeyEvent arg0) { } public void keyTyped(KeyEvent arg0) { } public void focusGained(FocusEvent e) { if(e.getSource()==textField&&textField.getText().equals("")){ name_errorLabel.setVisible(false); name_label.setVisible(false); } if(e.getSource()==passwordField&&textField.getText().equals("")){ name_errorLabel.setVisible(false); name_label.setVisible(false); } } public void focusLost(FocusEvent arg0) { } }