📄 frmbrcf.java
字号:
package myprojects.FrmBRCF;
import org.eclipse.swt.*;
import org.eclipse.swt.graphics.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.events.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.custom.*;
import java.util.Date;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.text.*;
import java.lang.*;
import myprojects.DB.*;
public class FrmBRCF //生成病人处方类
{
private static DbCon DB=new DbCon();//与数据库连接
private static Shell shell;
private Combo cmbCFDH; //处方单号
private Text txtKDKS; //开单科室
private Combo cmbFYYF; //发药药房
private Text txtBRXM; //病人姓名
private Text txtBRXB; //病人性别
private Text txtBRNL; //病人年龄
private Text txtCFYS; //处方医师
private Text txtCFRQ; //处方日期
private Text txtHJJE; //处方合计金额
private Text txtFYR; //发药人
private Text txtFYRQ; //发药日期
private Table table; //--------------生成表格
private Combo cmbYM; //药名
private Text txtDJ; //单价
private Combo cmbJJDW; //计价单位
private Text txtYFKC; //药方库存
private Text txtSL; //药品数量
private Text txtJE; //小合计金额
private Text txtJX; //药品剂型
private Text txtGG; //药品规格
private Text txtCD; //产地
private Text txtCJ; //厂家
private Text txtBZ; //备注
private Group group; //创建一个group
private Button btnCF; //处方状态Ratio
private Button btnFY; //发药状态Ratio
private Button btnSure; //确定按钮
private Button btnDel; //删除按钮
private Button btnCancel; //取消按钮
private Button btnSave; //保存按钮
private Button btnReturn; //返回按钮
private Label lblDisplay; //用于显示操作结果的标签
public int countNO=1; //table增加记录的计数器
public int userType=0; //设置用户类型 1:医生;0:发药工作人员
public static void main(String arg[])
{
Display display=new Display();
shell=new Shell(display);
FrmBRCF objBRCF=new FrmBRCF(); //对象实例化
shell=new Shell(display); //初始化shell
shell.setSize(600,450);
shell.setVisible(true);
shell.setText("病人处方数据登录!");
shell.open();
//用于检查与数据库连接情况
if(!DB.getConnection())
{
MessageBox msBox = new MessageBox(shell,SWT.OK|SWT.ICON_ERROR);
msBox.setText("错误");
msBox.setMessage("数据库连接出错");
msBox.open();
return;
}
objBRCF.creatText(); //创建文本
objBRCF.creatTable(); //创建表格
objBRCF.creatGroup(); //创建组
objBRCF.initData();
while(!objBRCF.shell.isDisposed())
{
if(!display.readAndDispatch())
{
display.sleep();
}
}
display.dispose();
}
/**
* 函数名:creatText
* 编写者:郭军,田文涛
* 功 能:创建文体框!!
* 输入参数:
* 输出参数:
* 备 注:
*/
public void creatText()
{
final Label lblCFDH=new Label(shell,SWT.NONE);
lblCFDH.setText("处方单号"); //处方单号标签
lblCFDH.setBounds(60,20,50,15); //应用其布局
cmbCFDH=new Combo(shell,SWT.BORDER); //处方单号组合框
cmbCFDH.setBounds(110,15,115,20); //应用其布局
final Label lblKDKS=new Label(shell,SWT.NONE);
lblKDKS.setText("开单科室"); //开单科室
lblKDKS.setBounds(240,20,50,15);
txtKDKS=new Text(shell,SWT.BORDER);
txtKDKS.setBounds(290,15,100,20);
//txtKDKS.setText(DB.getNowDate());
final Label lblFYYF=new Label(shell,SWT.None);
lblFYYF.setText("发药药房"); //发药药房
lblFYYF.setBounds(420,20,50,15);
cmbFYYF=new Combo(shell,SWT.BORDER);
cmbFYYF.setBounds(470,15,100,20);
final Label lblBRXM=new Label(shell,SWT.None);
lblBRXM.setText("病人姓名"); //病人姓名
lblBRXM.setBounds(60,45,50,15);
txtBRXM=new Text(shell,SWT.BORDER);
txtBRXM.setBounds(110,40,100,20);
final Label lblBRXB=new Label(shell,SWT.None);
lblBRXB.setText("病人性别"); //病人性别
lblBRXB.setBounds(240,45,50,15);
txtBRXB=new Text(shell,SWT.BORDER);
txtBRXB.setBounds(290,40,100,20);
final Label lblBRNL=new Label(shell,SWT.None);
lblBRNL.setText("病人年龄"); //病人年龄
lblBRNL.setBounds(420,45,50,15);
txtBRNL=new Text(shell,SWT.BORDER);
txtBRNL.setBounds(470,40,100,20);
final Label lblCFYS=new Label(shell,SWT.None);
lblCFYS.setText("处方医师"); //处方医师
lblCFYS.setBounds(60,70,50,15);
txtCFYS=new Text(shell,SWT.BORDER);
txtCFYS.setBounds(110,65,100,20);
final Label lblCFRQ=new Label(shell,SWT.None);
lblCFRQ.setText("处方日期"); //处方日期
lblCFRQ.setBounds(240,70,50,15);
txtCFRQ=new Text(shell,SWT.BORDER);
txtCFRQ.setBounds(290,65,100,20);
final Label lblHJJE=new Label(shell,SWT.None);
lblHJJE.setText("合计金额"); //合计金额
lblHJJE.setBounds(420,70,50,15);
txtHJJE=new Text(shell,SWT.BORDER);
txtHJJE.setBounds(470,65,100,20);
final Label lblFYR=new Label(shell,SWT.None);
lblFYR.setText("发药人"); //发药人
lblFYR.setBounds(60,95,50,15);
txtFYR=new Text(shell,SWT.BORDER);
txtFYR.setBounds(110,90,100,20);
final Label lblFYRQ=new Label(shell,SWT.None);
lblFYRQ.setText("发药日期"); //发药日期
lblFYRQ.setBounds(240,95,50,15);
txtFYRQ=new Text(shell,SWT.BORDER);
txtFYRQ.setBounds(290,90,100,20);
//初始化用户登录的类型:CF/FY
btnCF=new Button(shell,SWT.RADIO);
btnCF.setSelection(true);
btnCF.setText("处方");
btnCF.setBounds(10,70,50,15);
btnFY=new Button(shell,SWT.RADIO);
btnFY.setText("发药");
btnFY.setBounds(10,95,50,15);
//为处方单号增加选择监听
cmbCFDH.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent select)
{
//得到处方单号
String strCF=cmbCFDH.getText();
System.out.println("查看的病人处方号是:"+strCF);
//清空表格及文本框中上次存在的数据!
delTextCF();
table.removeAll();
//调用得到病人处方函数
getBRCF(strCF);
//设置相应控件的可用性
disEnable();
//调用得到处方药品的详细信息.
getYPMX(strCF);
//加载登录者的个人信息userID/YYYF到相应的文本框中
txtFYR.setText(DB.getUserInfo("UserID"));
cmbFYYF.setText(DB.getUserInfo("YYYF"));
//得到当前时间
txtFYRQ.setText(DB.getNowDate());
}
});
//为病人姓名增加监听
txtBRXM.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent eveXM)
{
if(eveXM.keyCode==13) //如果按下回车键
{
//判定病人姓名是否在0到之间
if(txtBRXM.getText().length()==0|txtBRXM.getText().length()>10)
{
txtBRXM.setText("");
showMessage("错误","病人姓名为空或超出范围!",SWT.ICON_ERROR);
}
else
{
txtBRXB.setFocus(); //焦距在病人性别上
}
}
}
});
//为病人性别增加监听
txtBRXB.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent eveXB)
{
if(eveXB.keyCode==13) //如果按下回车键
{
//性别长度大于2报错
if(txtBRXB.getText().length()>2)
{
txtBRXB.setText("");
showMessage("错误","病人性别不符合约束!",SWT.ICON_ERROR);
}
else
{ //如果输入0是性别为男反之其它为女
if(txtBRXB.getText().equals("0"))
{
txtBRXB.setText("男");
}
else
{
txtBRXB.setText("女");
}
txtBRNL.setFocus();
}
}
}
});
//为病人年龄增加监听
txtBRNL.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent eveNL)
{
if(eveNL.keyCode==13) //如果按下回车键
{
//检查年龄的合法性
if(txtBRNL.getText().length()>2)
{
txtBRNL.setText("");
showMessage("错误","病人年龄不符合约束!",SWT.ICON_ERROR);
}
else
{
//用户如果输入C表示成人,自动填在年龄框中
if(txtBRNL.getText().equals("c"));
{
txtBRNL.setText("成");
}
cmbYM.setFocus();
}
}
}
});
}
/**
* 函数名:creatTable
* 编写者:郭军,田文涛
* 功 能:创建表格
* 输入参数:
* 输出参数:
* 备 注:
*/
public void creatTable()
{
table =new Table(shell,SWT.BORDER|SWT.SINGLE|SWT.FULL_SELECTION);
table.setHeaderVisible(true);
table.setLinesVisible(true);
//table.setItemCount(0); //there needs data
table.setBounds(10,120,565,140);
table.setMenu(creatMenu());
final TableColumn col1=new TableColumn(table,SWT.LEFT);
col1.setText("药名");
col1.setWidth(150);
TableColumn col2=new TableColumn(table,SWT.LEFT);
col2.setText("单价");
col2.setWidth(50);
TableColumn col3=new TableColumn(table,SWT.LEFT);
col3.setText("计价单位");
col3.setWidth(60);
TableColumn col4=new TableColumn(table,SWT.LEFT);
col4.setText("药房库存");
col4.setWidth(60);
TableColumn col5=new TableColumn(table,SWT.LEFT);
col5.setText("数量");
col5.setWidth(40);
TableColumn col6=new TableColumn(table,SWT.LEFT);
col6.setText("金额");
col6.setWidth(40);
TableColumn col7=new TableColumn(table,SWT.LEFT);
col7.setText("剂型");
col7.setWidth(50);
TableColumn col8=new TableColumn(table,SWT.LEFT);
col8.setText("规格");
col8.setWidth(55);
TableColumn col9=new TableColumn(table,SWT.LEFT);
col9.setText("产地");
col9.setWidth(40);
TableColumn col10=new TableColumn(table,SWT.LEFT);
col10.setText("厂家");
col10.setWidth(60);
TableColumn col11=new TableColumn(table,SWT.LEFT);
col11.setText("备注");
col11.setWidth(100);
//表格增加双击监听
table.addSelectionListener(new SelectionAdapter(){
public void widgetDefaultSelected(SelectionEvent e)
{
TableItem itemSelect=table.getSelection()[0];
//调用itemSelect自定义函数,将表格内容显示出来
editEntry(itemSelect);
System.out.println("查看的列数为: "+itemSelect);
}
});
}
/**
* 函数名:creatGroup
* 编写者:郭军,田文涛
* 功 能:创建一个group
* 输入参数:
* 输出参数:
* 备 注:
*/
public void creatGroup()
{
//创建一个Group,
group = new Group(shell, SWT.NONE);
group.setBounds(10, 260, 565, 120);
//初始化为不可见
group.setVisible(false);
//药名
Label lblYM = new Label(group, SWT.NONE);
lblYM.setText("药名");
lblYM.setBounds(10, 20, 30, 15);
cmbYM=new Combo(group,SWT.BORDER);
cmbYM.setBounds(60,15,130,20);
//单价
final Label lblDJ=new Label(group,SWT.NONE);
lblDJ.setText("单价");
lblDJ.setBounds(210,20,30,15);
txtDJ=new Text(group,SWT.BORDER);
txtDJ.setBounds(250,15,110,20);
//计价单位
final Label lblJJDW=new Label(group,SWT.None);
lblJJDW.setText("计价单位");
lblJJDW.setBounds(390,20,50,15);
cmbJJDW=new Combo(group,SWT.BORDER);
cmbJJDW.setBounds(440,15,110,20);
//药方库存
final Label lblYFKC = new Label(group, SWT.NONE);
lblYFKC.setText("药房库存");
lblYFKC.setBounds(10, 45, 50, 15);
txtYFKC=new Text(group,SWT.BORDER);
txtYFKC.setBounds(60,40,110,20);
//数量
final Label lblSL=new Label(group,SWT.NONE);
lblSL.setText("数量");
lblSL.setBounds(210,45,30,15);
txtSL=new Text(group,SWT.BORDER);
txtSL.setBounds(250,40,110,20);
//金额
final Label lblJE=new Label(group,SWT.None);
lblJE.setText("金额");
lblJE.setBounds(390,45,50,15);
txtJE=new Text(group,SWT.BORDER);
txtJE.setBounds(440,40,110,20);
//剂型
final Label lblJX = new Label(group, SWT.NONE);
lblJX.setText("剂型");
lblJX.setBounds(10, 70, 30, 15);
txtJX=new Text(group,SWT.BORDER);
txtJX.setBounds(60,65,110,20);
//规格
final Label lblGG=new Label(group,SWT.NONE);
lblGG.setText("规格");
lblGG.setBounds(210,70,30,15);
txtGG=new Text(group,SWT.BORDER);
txtGG.setBounds(250,65,110,20);
//产地
final Label lblCD=new Label(group,SWT.None);
lblCD.setText("产地");
lblCD.setBounds(390,70,50,15);
txtCD=new Text(group,SWT.BORDER);
txtCD.setBounds(440,65,110,20);
//厂家
final Label lblCJ = new Label(group, SWT.NONE);
lblCJ.setText("厂家");
lblCJ.setBounds(10, 95, 30, 15);
txtCJ=new Text(group,SWT.BORDER);
txtCJ.setBounds(60,90,110,20);
//备注
final Label lblBZ=new Label(group,SWT.NONE);
lblBZ.setText("备注");
lblBZ.setBounds(210,95,30,15);
txtBZ=new Text(group,SWT.BORDER);
txtBZ.setBounds(250,90,110,20);
//初始化用示显示操作结果的标签
lblDisplay =new Label(shell,SWT.NONE);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -