📄 operatormanagepanel.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 + -