?? 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();// 將新建賬套設(shè)置為需要保存的賬套
Vector<String> newCriterionSetV = new Vector<String>();// 創(chuàng)建代表賬套表格行的向量對象
newCriterionSetV.add(needSaveRow + 1 + "");// 添加賬套序號
newCriterionSetV.add(name);// 添加賬套名稱
leftTableModel.addRow(newCriterionSetV);// 將向量對象添加到左側(cè)的賬套表格中
leftTable.setRowSelectionInterval(needSaveRow,
needSaveRow);// 設(shè)置新建賬套為選中行
textArea.setText(explain);// 設(shè)置賬套說明
TbReckoning reckoning = new TbReckoning();// 創(chuàng)建賬套對象
reckoning.setName(name);// 設(shè)置賬套名稱
reckoning.setExplain(explain);// 設(shè)置賬套說明
reckoningV.add(reckoning);// 將賬套對象添加到向量中
refreshItemAllRowValueV(needSaveRow);// 同步刷新右側(cè)的賬套項目表格
}
} 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, "現(xiàn)在已經(jīng)沒有任何賬套信息!",
"友情提示", 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, "現(xiàn)在已經(jīng)沒有任何賬套信息!",
"友情提示", 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()) {
// 設(shè)置默認(rèn)選中行的索引
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);// 調(diào)用方法添加賬套
} 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, "現(xiàn)在已經(jīng)沒有任何賬套信息!",
"友情提示", 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), "友情提示",
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -