📄 criterionsetpanel.java
字号:
package com.mwq.frame.treatement;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Iterator;
import java.util.Set;
import java.util.Vector;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.ListSelectionModel;
import javax.swing.border.TitledBorder;
import javax.swing.table.DefaultTableModel;
import com.mwq.hibernate.Dao;
import com.mwq.hibernate.HibernateSessionFactory;
import com.mwq.hibernate.mapping.TbAccountItem;
import com.mwq.hibernate.mapping.TbReckoning;
import com.mwq.hibernate.mapping.TbReckoningInfo;
import com.mwq.mwing.MTable;
public class CriterionSetPanel extends JPanel {
private JTextArea textArea;
private JTable leftTable;
private JTable rightTable;
private final Vector<String> leftTableColumnV = new Vector<String>();
private final Vector<Vector<String>> leftTableValueV = new Vector<Vector<String>>();
private final DefaultTableModel leftTableModel = new DefaultTableModel(
leftTableValueV, leftTableColumnV);
private final Vector<String> rightTableColumnV = new Vector<String>();
private final Vector<Vector<String>> rightTableValueV = new Vector<Vector<String>>();
private final DefaultTableModel rightTableModel = new DefaultTableModel(
rightTableValueV, rightTableColumnV);
private final Vector<TbReckoning> reckoningV = new Vector<TbReckoning>();
private final Dimension dimension = Toolkit.getDefaultToolkit()
.getScreenSize();
private final int width = dimension.width;
private final int height = dimension.height;
private final Dao dao = Dao.getInstance();
private String reckoningExplain = "";
private int lastSelectedRow = -1;
private int needSaveRow = -1;
/**
* Create the panel
*/
public CriterionSetPanel() {
super();
setLayout(new BorderLayout());
final JPanel buttonPanel = new JPanel();
buttonPanel.setBackground(Color.WHITE);
add(buttonPanel, BorderLayout.NORTH);
final JButton addSetButton = new JButton();
addSetButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (needSaveRow == -1) {// 没有需要保存的账套
CreateCriterionSetDialog createCriterionSet = new CreateCriterionSetDialog();
createCriterionSet.setBounds((width - 350) / 2,
(height - 250) / 2, 350, 250);
createCriterionSet.setVisible(true);// 弹出新建账套对话框
if (createCriterionSet.isSubmit()) {// 单击“确定”按钮
String name = createCriterionSet.getNameTextField()
.getText();// 获得账套名称
String explain = createCriterionSet
.getExplainTextArea().getText();// 获得账套说明
needSaveRow = leftTableValueV.size();// 将新建账套设置为需要保存的账套
Vector<String> newCriterionSetV = new Vector<String>();// 创建代表账套表格行的向量对象
newCriterionSetV.add(needSaveRow + 1 + "");// 添加账套序号
newCriterionSetV.add(name);// 添加账套名称
leftTableModel.addRow(newCriterionSetV);// 将向量对象添加到左侧的账套表格中
leftTable.setRowSelectionInterval(needSaveRow,
needSaveRow);// 设置新建账套为选中行
textArea.setText(explain);// 设置账套说明
TbReckoning reckoning = new TbReckoning();// 创建账套对象
reckoning.setName(name);// 设置账套名称
reckoning.setExplain(explain);// 设置账套说明
reckoningV.add(reckoning);// 将账套对象添加到向量中
refreshItemAllRowValueV(needSaveRow);// 同步刷新右侧的账套项目表格
}
} else {// 有需要保存的账套,弹出提示保存对话框
JOptionPane.showMessageDialog(null, "请先保存账套: "
+ leftTable.getValueAt(needSaveRow, 1), "友情提示",
JOptionPane.INFORMATION_MESSAGE);
}
}
});
addSetButton.setText("新建账套");
buttonPanel.add(addSetButton);
final JButton updateSetButton = new JButton();
updateSetButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
int selectedRow = leftTable.getSelectedRow();
if (needSaveRow == -1 || needSaveRow == selectedRow) {
if (selectedRow == -1) {
JOptionPane.showMessageDialog(null, "现在已经没有任何账套信息!",
"友情提示", JOptionPane.INFORMATION_MESSAGE);
} else {
CreateCriterionSetDialog updateCriterionSet = new CreateCriterionSetDialog();
updateCriterionSet.setTitle("账套维护");
updateCriterionSet.getNameTextField().setText(
leftTableValueV.get(selectedRow).get(1));
updateCriterionSet.getExplainTextArea().setText(
textArea.getText());
updateCriterionSet.setBounds((width - 350) / 2,
(height - 250) / 2, 350, 250);
updateCriterionSet.setVisible(true);
if (updateCriterionSet.isSubmit()) {
needSaveRow = selectedRow;
Vector<String> updateCriterionSetV = leftTableValueV
.get(needSaveRow);
updateCriterionSetV.set(1, updateCriterionSet
.getNameTextField().getText().toString());
leftTableModel.setDataVector(leftTableValueV,
leftTableColumnV);
textArea.setText(updateCriterionSet
.getExplainTextArea().getText());
leftTable.setRowSelectionInterval(needSaveRow,
needSaveRow);
}
}
} else {
JOptionPane.showMessageDialog(null, "请先保存账套: "
+ leftTable.getValueAt(needSaveRow, 1), "友情提示",
JOptionPane.INFORMATION_MESSAGE);
}
}
});
updateSetButton.setText("修改账套");
buttonPanel.add(updateSetButton);
final JButton delSetButton = new JButton();
delSetButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
int leftSelectedRow = leftTable.getSelectedRow();
if (leftSelectedRow == -1) {
JOptionPane.showMessageDialog(null, "现在已经没有任何账套信息!",
"友情提示", JOptionPane.INFORMATION_MESSAGE);
} else {
int i = JOptionPane.showConfirmDialog(null, "确定删除账套:"
+ leftTable.getValueAt(leftSelectedRow, 1), "友情提示",
JOptionPane.YES_NO_OPTION);
if (i == 0) {
if (needSaveRow == -1 || leftSelectedRow == needSaveRow) {
needSaveRow = -1;
leftTableValueV.remove(leftSelectedRow);
dao.deleteObject(reckoningV.get(leftSelectedRow));
reckoningV.remove(leftSelectedRow);
if (leftSelectedRow == leftTableValueV.size()) {
// 设置默认选中行的索引
leftSelectedRow -= 1;
} else {
// 修改序号
for (int j = leftSelectedRow; j < leftTableValueV
.size(); j++) {
leftTable.setValueAt(j + 1, j, 0);
}
}
leftTableModel.setDataVector(leftTableValueV,
leftTableColumnV);
if (leftSelectedRow != -1)
leftTable.setRowSelectionInterval(
leftSelectedRow, leftSelectedRow);
refreshItemAllRowValueV(leftSelectedRow);
} else {
JOptionPane.showMessageDialog(null, "请先保存账套: "
+ leftTable.getValueAt(needSaveRow, 1),
"友情提示", JOptionPane.INFORMATION_MESSAGE);
return;
}
}
}
}
});
delSetButton.setText("删除账套");
buttonPanel.add(delSetButton);
final JLabel leftLabel = new JLabel();
leftLabel.setPreferredSize(new Dimension(20, 20));
buttonPanel.add(leftLabel);
final JButton addItemButton = new JButton();
addItemButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int leftSelectedRow = leftTable.getSelectedRow();// 获得选中的账套
if (leftSelectedRow == -1) {// 未选中任何账套
JOptionPane.showMessageDialog(null, "请先建立账套!", "友情提示",
JOptionPane.INFORMATION_MESSAGE);// 弹出提示信息
} else {// 已选中账套
if (needSaveRow == -1 || needSaveRow == leftSelectedRow) {
addItem(leftSelectedRow);// 调用方法添加账套
} else {
JOptionPane.showMessageDialog(null, "请先保存账套: "
+ leftTable.getValueAt(needSaveRow, 1), "友情提示",
JOptionPane.INFORMATION_MESSAGE);
}
}
}
});
addItemButton.setText("添加项目");
buttonPanel.add(addItemButton);
final JButton delItemButton = new JButton();
delItemButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
int leftSelectedRow = leftTable.getSelectedRow();
if (leftSelectedRow == -1) {
JOptionPane.showMessageDialog(null, "现在已经没有任何账套信息!",
"友情提示", JOptionPane.INFORMATION_MESSAGE);
} else {
if (needSaveRow == -1 || needSaveRow == leftSelectedRow) {
int rightSelectedRow = rightTable.getSelectedRow();
if (rightSelectedRow == -1) {
JOptionPane.showMessageDialog(null, "请选择要删除的项目!",
"友情提示", JOptionPane.INFORMATION_MESSAGE);
} else {
int i = JOptionPane.showConfirmDialog(null,
"确定删除项目: "
+ rightTable.getValueAt(
rightSelectedRow, 1),
"友情提示", JOptionPane.YES_NO_OPTION);
if (i == 0) {
needSaveRow = leftSelectedRow;
String name = (String) rightTable.getValueAt(
rightSelectedRow, 1);
String unit = (String) rightTable.getValueAt(
rightSelectedRow, 2);
Set reckoningInfoSet = reckoningV.get(
leftSelectedRow).getTbReckoningInfos();
Iterator<TbReckoningInfo> reckoningInfoIter = reckoningInfoSet
.iterator();
while (reckoningInfoIter.hasNext()) {
TbReckoningInfo reckoningInfo = reckoningInfoIter
.next();
TbAccountItem tbAccountItem = reckoningInfo
.getTbAccountItem();
if (tbAccountItem.getName().equals(name)
&& tbAccountItem.getUnit().equals(
unit)) {
reckoningInfoSet.remove(reckoningInfo);
break;
}
}
refreshItemAllRowValueV(leftSelectedRow);
if (rightSelectedRow != 0) {
if (rightSelectedRow == rightTableValueV
.size()) {
rightSelectedRow -= 1;
}
rightTable.setRowSelectionInterval(
rightSelectedRow, rightSelectedRow);
}
}
}
} else {
JOptionPane.showMessageDialog(null, "请先保存账套: "
+ leftTable.getValueAt(needSaveRow, 1), "友情提示",
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -