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

📄 readerinfopanel.java

📁 一个java图书管理系统
💻 JAVA
字号:
package net.sfte.htlibrary.ui;

import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.DateFormat;
import java.text.NumberFormat;

import javax.swing.BorderFactory;
import javax.swing.InputVerifier;
import javax.swing.JComponent;
import javax.swing.JFormattedTextField;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.border.Border;

import net.sfte.htlibrary.database.HtConnection;

/**
 * This class defines a panel with Reader's basic information. It will be used
 * in borrow book dialog, return back book and other dialogs.
 * 
 * @author wenwen
 */
public class ReaderInfoPanel extends JPanel {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public ReaderInfoPanel() {
		setLayout(new GridBagLayout());

		idField = new JFormattedTextField(NumberFormat.getIntegerInstance());
		idField.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				setField();
			}
		});
		idField.addFocusListener(new FocusAdapter() {
			public void focusLost(FocusEvent e) {
				setField();
			}
		});
		idField.setInputVerifier(new FormattedTextFieldVerifier());
		studentIdField = new JTextField();
		studentIdField.setEditable(false);
		nameField = new JTextField();
		nameField.setEditable(false);
		ageField = new JFormattedTextField(NumberFormat.getIntegerInstance());
		ageField.setEditable(false);
		sexField = new JTextField();
		sexField.setEditable(false);
		academyField = new JTextField();
		academyField.setEditable(false);
		departmentField = new JTextField();
		departmentField.setEditable(false);
		departmentField.setColumns(10);
		dateField = new JFormattedTextField(DateFormat.getDateInstance());
		dateField.setEditable(false);
		bookAmountField = new JFormattedTextField(NumberFormat
				.getIntegerInstance());
		bookAmountField.setEditable(false);
		totalAmountField = new JFormattedTextField(NumberFormat
				.getIntegerInstance());
		totalAmountField.setEditable(false);
		summaryArea = new JTextArea();
		summaryArea.setEditable(false);
		summaryArea.setLineWrap(true);

		add(new JLabel("读者编号: "), new GBC(0, 0).setAnchor(GBC.EAST));
		add(idField, new GBC(1, 0).setFill(GBC.HORIZONTAL).setWeight(100, 0)
				.setInsets(5));
		add(new JLabel("[回车]"), new GBC(2, 0).setAnchor(GBC.EAST));

		add(new JLabel("读者学号: "), new GBC(0, 1).setAnchor(GBC.EAST));
		add(studentIdField, new GBC(1, 1, 2, 1).setFill(GBC.HORIZONTAL)
				.setWeight(100, 0).setInsets(5));

		add(new JLabel("姓名: "), new GBC(0, 2).setAnchor(GBC.EAST));
		add(nameField, new GBC(1, 2, 2, 1).setFill(GBC.HORIZONTAL).setWeight(
				100, 0).setInsets(5));

		add(new JLabel("年龄: "), new GBC(0, 3).setAnchor(GBC.EAST));
		add(ageField, new GBC(1, 3, 2, 1).setFill(GBC.HORIZONTAL).setWeight(
				100, 0).setInsets(5));

		add(new JLabel("性别: "), new GBC(0, 4).setAnchor(GBC.EAST));
		add(sexField, new GBC(1, 4, 2, 1).setFill(GBC.HORIZONTAL).setWeight(
				100, 0).setInsets(5));

		add(new JLabel("学院: "), new GBC(0, 5).setAnchor(GBC.EAST));
		add(academyField, new GBC(1, 5, 2, 1).setFill(GBC.HORIZONTAL)
				.setWeight(100, 0).setInsets(5));

		add(new JLabel("系别: "), new GBC(0, 6).setAnchor(GBC.EAST));
		add(departmentField, new GBC(1, 6, 2, 1).setFill(GBC.HORIZONTAL)
				.setWeight(100, 0).setInsets(5));

		add(new JLabel("注册日期: "), new GBC(0, 7).setAnchor(GBC.EAST));
		add(dateField, new GBC(1, 7, 2, 1).setFill(GBC.HORIZONTAL).setWeight(
				100, 0).setInsets(5));

		add(new JLabel("当前借书: "), new GBC(0, 8).setAnchor(GBC.EAST));
		add(bookAmountField, new GBC(1, 8, 2, 1).setFill(GBC.HORIZONTAL)
				.setWeight(100, 0).setInsets(5));

		add(new JLabel("借书总量: "), new GBC(0, 9).setAnchor(GBC.EAST));
		add(totalAmountField, new GBC(1, 9, 2, 1).setFill(GBC.HORIZONTAL)
				.setWeight(100, 0).setInsets(5));

		add(new JLabel("简介: "), new GBC(0, 10).setAnchor(GBC.EAST));

		add(new JScrollPane(summaryArea), new GBC(1, 10, 2, 3)
				.setFill(GBC.BOTH).setWeight(100, 100).setInsets(5));

		Border etched = BorderFactory.createEtchedBorder();
		setBorder(BorderFactory.createTitledBorder(etched, "读者基本信息"));
	}

	private void setField() {
		if (idField.getText().equals(""))
			return;
		Connection con = null;
		try {
			con = HtConnection.getConnection();
			PreparedStatement pstmt = con
					.prepareStatement("SELECT * FROM reader WHERE reader_id = ?");
			pstmt.setInt(1, Integer.parseInt(idField.getText()));
			ResultSet rs = pstmt.executeQuery();
			if (rs.next()) {
				studentIdField.setText(rs.getString(2));
				nameField.setText(rs.getString(3));
				ageField.setValue(rs.getInt(4));
				sexField.setText(rs.getString(5));
				academyField.setText(rs.getString(6));
				departmentField.setText(rs.getString(7));
				dateField.setValue(rs.getDate(8));
				totalAmountField.setValue(rs.getInt(9));
				summaryArea.setText(rs.getString(10));
			} else {
				initField();
				return;
			}

			pstmt = con.prepareStatement("SELECT COUNT(*) FROM borrowbook "
					+ "WHERE reader_id = ? " + "GROUP BY reader_id");
			pstmt.setInt(1, Integer.parseInt(idField.getText()));
			rs = pstmt.executeQuery();
			if (rs.next()) {
				bookAmountField.setValue(rs.getInt(1));
			} else {
				bookAmountField.setValue(0);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	public void initField() {
		idField.setValue(new Integer(0));
		studentIdField.setText("");
		nameField.setText("");
		ageField.setValue(null);
		sexField.setText("");
		academyField.setText("");
		departmentField.setText("");
		dateField.setValue(null);
		bookAmountField.setValue(null);
		totalAmountField.setValue(null);
		summaryArea.setText("");
	}

	private class FormattedTextFieldVerifier extends InputVerifier {
		public boolean verify(JComponent component) {
			JFormattedTextField field = (JFormattedTextField) component;
			return field.isEditValid();
		}
	}

	protected JFormattedTextField idField;

	private JTextField studentIdField;

	private JTextField nameField;

	private JFormattedTextField ageField;

	private JTextField sexField;

	private JTextField academyField;

	private JTextField departmentField;

	private JFormattedTextField dateField;

	private JFormattedTextField bookAmountField;

	private JFormattedTextField totalAmountField;

	private JTextArea summaryArea;
}

⌨️ 快捷键说明

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