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

📄 operatormanagepanel.java

📁 一个优秀的干洗店管理系统
💻 JAVA
字号:
package view.panel.operator;

import java.awt.BorderLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Iterator;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;

import vo.OperatorVo;

import control.operator.OperatorManagePanelListener;
import dao.common.DbException;
import dao.common.InputException;
import dao.common.sql.OperatorSql;
import dao.operator.OperatorDao;
import dao.operator.impl.OperatorDaoImpl;

public class OperatorManagePanel extends JPanel {

	// =====该面板的两个子面板=====
	JPanel functionPanel, tablePanel;

	// -----声明functionPanel中的组件-----
	JLabel inputLabel; // 输入提示标签
	JTextField inputField; // 输入文本框
	// 查询按钮,添加按钮,修改按钮,退出按钮
	JButton searchButton, addButton, modifyButton, deleteButton, exitButton;

	// -----声明tablePanel中的组件-----
	JScrollPane tableScroll;
	JTable infoTable;

	// =====需要与其他的类进行数据交互的属性=====
	private String[] selectedData;

	/**
	 * 面板的共有构造器
	 */
	public OperatorManagePanel(JDialog dialog) {
		this.setSize(750, 480);
		this.setLayout(new BorderLayout());
		initComponent();
		this.add(buildFunctionPanel(dialog), BorderLayout.NORTH);
		this.add(buildTableScroll());
		initialize();
	}

	/**
	 * 构造功能面板,获得文本输入,提供触发相关事件的按钮
	 * 
	 * @return JPanel
	 */
	public JPanel buildFunctionPanel(JDialog dialog) {
		if (functionPanel == null) {
			functionPanel = new JPanel();
			functionPanel.add(inputLabel);
			functionPanel.add(buildInputField());
			functionPanel.add(buildButton("查找"));
			functionPanel.add(buildButton("添加操作员"));
			functionPanel.add(buildButton("修改信息", dialog));
			functionPanel.add(buildButton("删除操作员"));
			functionPanel.add(buildButton("退出", dialog));
		}
		return functionPanel;
	}

	/**
	 * 调用该函数一次,就将构造一个通过参数命名的JButton
	 * 
	 * @param name
	 *            name of a button
	 * @return JButton button named 'name'
	 */
	public JButton buildButton(String name) {
		JButton button = new JButton(name);
		button.addActionListener(new OperatorManagePanelListener(this));
		return button;
	}

	/**
	 * 调用该函数一次,就将构造一个通过参数命名,且需要对上级Dialog进行操作的的JButton
	 * 
	 * @param name
	 *            name of a button
	 * @return JButton button named 'name'
	 */
	public JButton buildButton(String name, JDialog dialog) {
		JButton button = new JButton(name);
		button.addActionListener(new OperatorManagePanelListener(this, dialog));
		return button;
	}

	/**
	 * 构造可滚动的JScrollPane用来放置JTable
	 */
	public JScrollPane buildTableScroll() {
		if (tableScroll == null) {
			tableScroll = new JScrollPane(buildInfoTable());
		}
		return tableScroll;
	}

	/**
	 * 构造一个用来显示操作员信息列表的表格
	 * 
	 * @return JTable
	 */
	public JTable buildInfoTable() {
		if (infoTable == null) {
			String[] names = { "操作员编号", "操作员名称", "联系电话", "联系地址", "所属权限" };
			Object[][] data = {};
			// 构造TableModel模型,不能被编辑
			DefaultTableModel model = new DefaultTableModel(data, names) {
				public boolean isCellEditable(int rowIndex, int columnIndex) {
					return false;
				}
			};
			infoTable = new JTable(model);
			// 给鼠标添加事件,传递表中选中的行
			infoTable.addMouseListener(new MouseAdapter() {
				public void mouseClicked(MouseEvent e) {
					int row = infoTable.getSelectedRow();
					int columns = infoTable.getColumnCount();
					String[] data = new String[columns];
					for (int i = 0; i < columns; i++) {
						data[i] = infoTable.getValueAt(row, i).toString();
					}
					setSelectedData(data);
				}
			});
		}
		return infoTable;
	}

	/**
	 * @return the selectedData
	 * @throws InputException
	 */
	public String[] getSelectedData() {
		if (null == selectedData) {
			JOptionPane.showMessageDialog(null, "请先选择要更改的会员记录");

		}
		return selectedData;
	}

	/**
	 * @param selectedData
	 *            the selectedData to set
	 */
	public void setSelectedData(String[] selectedData) {
		this.selectedData = selectedData;
	}

	/**
	 * 初始化组件
	 */
	public void initComponent() {
		initJLabel();
	}

	/**
	 * 初始化文本标签
	 */
	public void initJLabel() {
		inputLabel = new JLabel("请输入操作员编号(名称)");
	}

	/**
	 * 初始化文本输入框
	 */
	public JTextField buildInputField() {
		if (inputField == null) {
			inputField = new JTextField(8);
		}
		return inputField;
	}

	public void initialize() {
		OperatorDao dao = new OperatorDaoImpl();
		Vector<OperatorVo> v;
		try {
			v = dao.searchOperatorAll(OperatorSql.OPERATOR_LIST);
			if (v != null) {
				Iterator<OperatorVo> iter = v.iterator();
				OperatorVo value = null;
				JTable table = buildInfoTable();
				DefaultTableModel model = (DefaultTableModel) table.getModel();
				int rows = table.getRowCount();
				for (int i = rows - 1; i >= 0; i--) {
					model.removeRow(i);
				}
				rows = table.getRowCount();
				while (iter.hasNext()) {
					value = (OperatorVo) iter.next();
					Object[] data = { new Integer(value.getOperatorId()),
							value.getOperatorName(), value.getOperatorPhone(),
							value.getOperatorAddress(),
							value.getOperatorPurview() };
					// 将数据通过tablemodel添加到jtable中
					model.addRow(data);
				}
			}
		} catch (DbException ex) {
			JOptionPane.showMessageDialog(null, ex.getMessage());
		}

	}

}

⌨️ 快捷键说明

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