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

📄 criterionsetpanel.java

📁 java swing 开发的一些实例
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
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 + -