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

📄 historyquerypanel.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.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.OneRecord;
import com.asnk120.EMH.model.servicefactory.OneRecordServiceFactory;

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

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

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

	JTextField number = new JTextField();

	JTextField name = new JTextField();

	JTextField sex = new JTextField();

	JTextField age = new JTextField();

	JTextField sample = new JTextField();

	JTextField doctor = new JTextField();

	JTextField purpose = new JTextField();

	JTextField clinic = new JTextField();

	JTextField provider = new JTextField();

	JTextField date = new JTextField();

	JButton queryRecord = new JButton("查找");//现在暂时定位按钮的形式,一会改成键盘事件Enter

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

	private int countRows = 0;

	public final String[] COLUMN_NAMES = { "参数名", "参数值", "参考值" };//字符串的个数决定生成表格的列数

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

	JTextField line;// 用于生成线条

	private TableDataModal tableModel;

	private JTable table;

	private JScrollPane scrollPane = new JScrollPane();

	public HistoryQueryPanel() {
		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);
		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, 40, 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);

		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.setEnabled(false);//设置不可编辑,选中

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

		queryRecord.setBounds(100, 370, 60, 25);
		queryRecord.addActionListener(this);
		this.add(queryRecord);

		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);
		date.setBounds(570, 370, 80, 20);
		date.setEnabled(false);
		this.add(date);

		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
		OneRecord or = OneRecordServiceFactory.getService().execQuery(
				number.getText());
		if (or != null) {
			name.setText(or.getName());
			sex.setText(or.getSex());
			age.setText(or.getAge() + "");
			sample.setText(or.getSample());
			doctor.setText(or.getDoctor());
			purpose.setText(or.getPurpose());
			clinic.setText(or.getClinic());
			provider.setText(or.getProvider());
			date.setText(or.getDate());

			Vector<Vector> pvrList = or.getPVList();
			table.editCellAt(-1, -1); //这里也用,否则会出现焦点处数据的遗留
			tableModel.delAllRows();//清空上次生成的表
			//				System.out.println(pvrList.size());//test
			tableModel.insertRows(pvrList.size());
			tableModel.displayPVR(pvrList);

		} else {
			JOptionPane.showMessageDialog(this, "您所输入的编号不存在或非13位数字编号!");
		}

	}

	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 column == 1;// 设定只对第二列能编辑,但是其他列仍能被选定(如果table设置了setEnable(false)那么这个函数就没有用了)
		}

		/**
		 * 获得表格指定单元格的值
		 * 
		 * @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 insertRows(int rows) {
			for (int i = 0; i < rows; i++) {
				Vector<Object> data = new Vector<Object>();
				data.add("");// 定默认值为空
				data.add("");
				data.add("");
				tableDataList.add(data);// 先出数据
				fireTableRowsInserted(i, i);// 再出表格
				countRows++;
			}
			table.revalidate();

		}

		/**
		 * 删除所有行
		 */
		public void delAllRows() {
			if (countRows > 0) {
				tableDataList.clear();
				fireTableRowsDeleted(0, countRows - 1);
				countRows = 0;
			}

		}

		/**
		 * 显示查出的数据
		 * @param pvrList
		 */
		@SuppressWarnings("unchecked")
		public void displayPVR(Vector<Vector> pvrList) {
			for (int i = 0; i < pvrList.size(); i++) {
				tableDataList.elementAt(i).set(0,
						pvrList.elementAt(i).elementAt(0));
				tableDataList.elementAt(i).set(1,
						pvrList.elementAt(i).elementAt(1));
				tableDataList.elementAt(i).set(2,
						pvrList.elementAt(i).elementAt(2));
			}
		}
	}
}

⌨️ 快捷键说明

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