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

📄 addnewprojectpanel.java

📁 医院化验单系统
💻 JAVA
字号:
package com.asnk120.EMH.view;

import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
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.border.LineBorder;
import javax.swing.table.AbstractTableModel;

import com.asnk120.EMH.model.entity.PR;
import com.asnk120.EMH.model.servicefactory.PRServiceFactory;

/**
 * 
 * @author JingweiGroup
 * 
 */
public class AddNewProjectPanel extends JPanel implements ActionListener {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private JLabel title = new JLabel("鞍山仲景中医院");

	private JLabel subTitle = new JLabel("化验报告单");

	private JTextField number = new JTextField();

	private JTextField name = new JTextField();

	private JComboBox sex = new JComboBox();

	private JTextField age = new JTextField();

	private JTextField sample = new JTextField();

	private JComboBox doctor = new JComboBox();

	private JTextField purpose = new JTextField();

	private JTextField clinic = new JTextField();

	private JTextField provider = new JTextField();

	private JTextField proName = new JTextField("项目名称");

	private JComboBox year = new JComboBox();

	private JComboBox month = new JComboBox();

	private JComboBox day = new JComboBox();

	private JButton addRow = new JButton("增加");

	private JButton delRow = new JButton("删除");

	private JButton createTable = new JButton("创建");

	public final String[] COLUMN_NAMES = { "参数名", "参考值" };

	private Vector<Vector> tableDataList = new Vector<Vector>();

	private JScrollPane scrollPane = new JScrollPane();

	private int countRows = 0;

	private TableDataModal tableModel;

	private JLabel jl;// 用于生成所标签

	private JTextField line;// 用于生成线条

	private JTable table;

	public AddNewProjectPanel() {
		setLayout(null);

		jl = new JLabel(new ImageIcon("flag.JPG"));// 图标
		jl.setBounds(110, 5, 50, 50);
		this.add(jl);

		title.setFont(new Font("楷体", Font.BOLD, 30));// 第一行主标题
		title.setBounds(220, 5, 1000, 30);
		this.add(title);

		subTitle.setFont(new Font("楷体", Font.BOLD, 20));// 第二行副标题
		subTitle.setBounds(270, 35, 200, 25);
		this.add(subTitle);

		jl = new JLabel("编号:");
		jl.setFont(new Font(null, Font.PLAIN, 18));
		jl.setBounds(550, 35, 200, 25);
		this.add(jl);
		number.setBounds(610, 35, 100, 20);
		number.setEnabled(false);
		this.add(number);

		jl = new JLabel("姓名:");// 第三行,线上一行
		jl.setBounds(30, 70, 40, 20);
		this.add(jl);
		name.setBounds(90, 70, 70, 20);
		name.setEnabled(false);
		this.add(name);

		jl = new JLabel("性别:");
		jl.setBounds(220, 70, 40, 20);
		this.add(jl);
		sex.setBounds(260, 70, 45, 20);
		sex.setEnabled(false);

		this.add(sex);

		jl = new JLabel("年龄:");
		jl.setBounds(360, 70, 40, 20);
		this.add(jl);
		age.setBounds(400, 70, 40, 20);
		age.setEnabled(false);
		this.add(age);

		jl = new JLabel("送检标本:");
		jl.setBounds(480, 70, 80, 20);
		this.add(jl);
		sample.setBounds(550, 70, 40, 20);
		sample.setEnabled(false);
		this.add(sample);

		line = new JTextField();// 第一条线
		line.setBounds(20, 90, 750, 2);
		line.setEditable(false);
		line.setBorder(LineBorder.createBlackLineBorder());
		this.add(line);

		jl = new JLabel("送检医生:");// 第四行,两线之间的部分
		jl.setBounds(30, 98, 65, 20);
		this.add(jl);
		doctor.setBounds(90, 98, 70, 20);
		doctor.setEnabled(false);
		this.add(doctor);

		jl = new JLabel("检验目的:");
		jl.setBounds(220, 98, 65, 20);
		this.add(jl);
		purpose.setBounds(280, 98, 80, 20);
		purpose.setEnabled(false);
		this.add(purpose);

		jl = new JLabel("临床诊断:");
		jl.setBounds(445, 98, 65, 20);
		this.add(jl);
		clinic.setBounds(510, 98, 80, 20);
		clinic.setEnabled(false);
		this.add(clinic);

		line = new JTextField();// 第二条线
		line.setBounds(20, 118, 750, 2);
		line.setEditable(false);
		line.setBorder(LineBorder.createBlackLineBorder());
		this.add(line);

		proName.setBounds(25, 122, 60, 20);// 项目名
		this.add(proName);

		tableModel = new TableDataModal();// 表
		table = new JTable(tableModel);
		table.setBounds(100, 122, 600, 125);

		Dimension size = table.getTableHeader().getPreferredSize();// 设置表头的高度
		size.height = 25;
		table.getTableHeader().setPreferredSize(size);
		table.setRowHeight(25);

		table.setCellSelectionEnabled(false);// 防止选中的行程蓝色背景
		scrollPane.setViewportView(table);
		scrollPane.setBounds(100, 122, 600, 128);
		this.add(scrollPane);

		addRow.setBounds(480, 275, 60, 25);// 增加行按钮
		addRow.addActionListener(this);
		this.add(addRow);
		delRow.setBounds(560, 275, 60, 25);// 删除行按钮
		delRow.addActionListener(this);
		this.add(delRow);

		createTable.setBounds(100, 370, 60, 25);// 创建按钮
		createTable.addActionListener(this);
		this.add(createTable);

		jl = new JLabel("检验者:");// 第三条线上边
		jl.setBounds(500, 350, 60, 20);
		this.add(jl);
		provider.setBounds(570, 350, 80, 20);
		provider.setEnabled(false);
		this.add(provider);

		jl = new JLabel("报告日期:");
		jl.setBounds(500, 370, 65, 20);
		this.add(jl);
		year.setBounds(570, 370, 60, 20);
		year.setEnabled(false);
		this.add(year);
		month.setBounds(640, 370, 60, 20);
		month.setEnabled(false);
		this.add(month);
		day.setBounds(710, 370, 60, 20);
		day.setEnabled(false);
		this.add(day);

		line = new JTextField();// 第三条线
		line.setBounds(20, 400, 750, 2);
		line.setEditable(false);
		line.setBorder(LineBorder.createBlackLineBorder());
		this.add(line);

		jl = new JLabel(" 注:此结果仅对此标本负责,供医生参考,如有异议请在48小时内复核");// 第三条线下边
		jl.setBounds(300, 405, 500, 20);
		this.add(jl);

		setBounds(200, 200, 800, 500);
	}

	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		if (e.getSource() == addRow) {
			table.editCellAt(-1, -1); // 将编辑的目标焦点设置到一个没有的索引位置,不会报异常,解决了将表上编辑焦点移除的目的,否则当前编辑位置上的值永远都得不到,及时更新tableDataList。
			tableModel.insertRow();
		} else if (e.getSource() == delRow) {
			table.editCellAt(-1, -1); // 将编辑的目标焦点设置到一个没有的索引位置,不会报异常,解决了将表上编辑焦点移除的目的,否则当前编辑位置上的值永远都得不到,及时更新tableDataList。
			tableModel.delRow();
		} else if (e.getSource() == createTable) {
			if (proName.getText().equals("项目名称")
					|| proName.getText().equals("")) {
				JOptionPane.showMessageDialog(this, "请输入合理的项目名!");
			} else {
				table.editCellAt(-1, -1); // 将编辑的目标焦点设置到一个没有的索引位置,不会报异常,解决了将表上编辑焦点移除的目的,否则当前编辑位置上的值永远都得不到,及时更新tableDataList。
				if (countRows <= 0) {
					JOptionPane.showMessageDialog(this, "创建的项目表单至少包含一行!");
				} else {
					// for (int i = 0; i < tableDataList.size(); i++) {//测试
					// for (int j = 0; j < tableDataList.elementAt(i).size();
					// j++) {
					// System.out.print(tableDataList.elementAt(i)
					// .elementAt(j)
					// + " ");
					// }
					// System.out.println("");
					// }
					PR pp = new PR(proName.getText(), tableDataList);
					PRServiceFactory.getService().createPp(pp);
					JOptionPane.showMessageDialog(this, "创建成功!");
				}
			}

		}

	}

	private class TableDataModal extends AbstractTableModel {// 内部类

		/**
		 * 
		 */
		private static final long serialVersionUID = 1L;

		/**
		 * 获得表格的总列数
		 */
		public int getColumnCount() {
			return COLUMN_NAMES.length;
		}

		/**
		 * 获得表格的总行数
		 */
		public int getRowCount() {
			return countRows;
		}

		/**
		 * 获得可编辑的单元格
		 * 
		 * @param row
		 *            行
		 * @param column
		 *            列
		 */
		public boolean isCellEditable(int row, int column) {
			return true;// 对任意单元格均能编辑
		}

		/**
		 * 获得表格指定单元格的值
		 * 
		 * @param row
		 *            行
		 * @param column
		 *            列
		 */
		public Object getValueAt(int row, int column) {// 此函数用于把值显示出来,如果没有的话,即使有值也不会显示
			Object value = null;

			// 如果指定单元格非空
			if (!tableDataList.isEmpty()) {
				value = tableDataList.elementAt(row).elementAt(column);
			}

			return value;
		}

		/**
		 * 获得指定列的列名
		 * 
		 * @param column
		 *            指定的列
		 */
		public String getColumnName(int column) {
			return COLUMN_NAMES[column];
		}

		@SuppressWarnings("unchecked")
		public void setValueAt(Object value, int row, int column) {// 由此函数,输入的值不会被自动清空
			tableDataList.elementAt(row).setElementAt(value, column);
			fireTableDataChanged();
		}

		/**
		 * 在表格末尾插入新行
		 */
		public void insertRow() {

			Vector<Object> data = new Vector<Object>();
			data.add("");// 定默认值为空
			data.add("");
			tableDataList.add(data);// 先出数据
			fireTableRowsInserted(countRows, countRows);// 再出表格
			countRows++;
		}

		/**
		 * 删除末行
		 */
		public void delRow() {
			if (countRows > 0) {
				tableDataList.removeElementAt(countRows - 1);// 先删数据
				fireTableRowsDeleted(countRows - 2, countRows - 1);// 再删表格
				countRows--;
			}

		}
	}
}

⌨️ 快捷键说明

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