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

📄 datarecordpanel.java

📁 医院化验单系统
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
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.Calendar;
import java.util.LinkedList;
import java.util.List;
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.OneRecord;
import com.asnk120.EMH.model.entity.PR;
import com.asnk120.EMH.model.servicefactory.OneRecordServiceFactory;
import com.asnk120.EMH.model.servicefactory.PRServiceFactory;
import com.asnk120.EMH.model.servicefactory.ProServiceFactory;

/**
 * 
 * @author JingweiGroup
 * 
 */
public class DataRecordPanel 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(new String[] { "男", "女" });

	private JTextField age = new JTextField();

	private JTextField sample = new JTextField();

	private JComboBox doctor = new JComboBox(new String[] { "任秀荣", "张丽梅" });

	private JTextField purpose = new JTextField();

	private JTextField clinic = new JTextField();

	private JTextField provider = new JTextField();

	private JComboBox proNameList;// 值从数据库中得到

	private JComboBox year = new JComboBox();

	private JComboBox month = new JComboBox();

	private JComboBox day = new JComboBox();

	private List<Object> dayList = new LinkedList<Object>();

	private JButton recordData = new JButton("录入");

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

	public final int YEAR_START = 2008;// 规定开始和结束的可选日期,用于规定combobox中的日期

	public final int YEAR_END = 2050;

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

	String[] allProNames;

	private JScrollPane scrollPane = new JScrollPane();

	private int countRows = 0;

	private TableDataModal tableModel;

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

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

	private JTable table;

	public DataRecordPanel() {
		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);
		// number.setText("100200010");//测试,即使是设置了不可编辑或是不可用也是可以在程序中设置值的,只不过在界面中无法操作了
		// setNumber();//这行存在会导致236行的错误,是应为在这之前allProNames中还没有东西,为空值,所以这条语句只能用在170行后;但是后来才发现这条语句根本就是多余的,没有它朱初始化的时候照样能生成编号
		this.add(number);

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

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

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

		jl = new JLabel("送检标本:");
		jl.setBounds(480, 70, 80, 20);
		this.add(jl);
		sample.setBounds(550, 70, 40, 20);
		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);
		this.add(doctor);

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

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

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

		// System.out.println(allProNames);//测试
		allProNames = ProServiceFactory.getService().findAllProNames();// 从数据库中读取所有的项目名
		// System.out.println(allProNames);//测试
		if (allProNames != null) {
			proNameList = new JComboBox(allProNames);
		} else {
			proNameList = new JComboBox();
		}

		proNameList.addActionListener(this);// 可以监测到值改变事件

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

		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.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);//没搞明白什么意义
		tableModel.createDefaultRowsTable();// 生成默认大小的表,默认为项目列表中第一个项目对应的行数

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

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

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

		jl = new JLabel("报告日期:");
		jl.setBounds(500, 370, 65, 20);
		setDefaultDate();
		setNumber();// 这步必须有,否则初始化时不出现编号值
		this.add(jl);
		year.setBounds(570, 370, 60, 20);
		year.addActionListener(this);
		this.add(year);
		month.setBounds(640, 370, 60, 20);
		month.addActionListener(this);
		this.add(month);
		day.setBounds(710, 370, 60, 20);
		day.addActionListener(this);
		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 setNumber() {
		String str = "";// 存放生成的编号,前八位为从界面中获得,后四位为根据从数据库中查找的数据成
		String proName;
		if (allProNames != null) {
			proName = (String) proNameList.getSelectedItem();

			String str1, str2, str3, str4, str5;// 编号由5部分组成年、月、日、项目号、应该到的记录号
			str1 = (String) year.getSelectedItem();
			str2 = (String) month.getSelectedItem();
			str3 = (String) day.getSelectedItem();
			str4 = dataFormat(2, ProServiceFactory.getService().findProId(
					(String) proNameList.getSelectedItem()));// 在初始化的时候既不能用proNmaeList.getItemAt(0),也不能用proNameList.getSelectedItem()否则会报异常java.lang.NullpointerException
			str5 = dataFormat(3, ProServiceFactory.getService().getLast3Number(
					proName));
			str = str1 + str2 + str3 + str4 + str5;
			number.setText(str);
			// System.out.println(str);//测试
		}
	}

	public String dataFormat(int length, int aNumber) {// 可以做成连个参数的,另一个int类型,指定生成字串的位数,少的部分补零

⌨️ 快捷键说明

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