📄 addnewprojectpanel.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 + -