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

📄 frmxmfl.java

📁 用JAVA SWT编写的住院管理系统。用SQLServer数据库
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package myprojects.FrmXMFL;

import org.eclipse.swt.events.*;
import org.eclipse.swt.*;
import org.eclipse.swt.graphics.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.custom.*;
import myprojects.FrmMenu.*;

import java.sql.*;

import db.FrmXMFLDb.*;

public class FrmXMFL
{	
	private Tree tree;
    private static Shell shell;
	private Menu menu;
	private String RootLabel = "A";
	private FrmXMFLDb db=new FrmXMFLDb();
	private	static int prepreSQLCount;
	
    public static void main()
	{
		
        FrmXMFL Item=new FrmXMFL();
        Item.run();

	}
	
	
	/**
	* 函数名:run
	* 编写者:祝鹏举
	* 功  能:组装执行项目分类管理功能
	* 输入参数:无
	* 输出参数:无
	* 备  注:2005.9.27
	*/	
	
	private void run()
	{ 
		Display display = new Display();
		shell = new Shell(display,SWT.BORDER|SWT.TITLE);
		GridLayout gl = new GridLayout();
		gl.numColumns = 2;
		shell.setLayout(gl);
		shell.setSize(300,500);
		shell.setLocation(200,200);
		shell.setText("医药项目分类信息服务");
		this.creatItems();
		shell.open();
		while(!shell.isDisposed()){
			if(!display.readAndDispatch())
				display.sleep();
		}
		System.out.println("close");
		display.dispose();

	}
	
	/**
	* 函数名:creatItems
	* 编写者:祝鹏举
	* 功  能:依次创建初始化窗体上各个控件
	* 输入参数:无
	* 输出参数:无
	* 备  注:2005.9.15
	*/	
	private void creatItems()
	{
		this.creatRadioBtn();
		this.creatTree();	
		this.creatText();
		this.creatCancelBtn();
	}
	
	private void creatRadioBtn()
	{
		Button btlYao = new Button(shell,SWT.RADIO);
		btlYao.setText("药");
		btlYao.setSelection(true);
		btlYao.addSelectionListener(new SelectionAdapter()
		{
			public void widgetSelected(SelectionEvent e)
			{	
				if(prepreSQLCount>0)
				{
					remindsaveData();
				}
				RootLabel = "A";
				recreatTreeItem();
			}
		});
			
		Button btlYLFW = new Button(shell,SWT.RADIO);
		btlYLFW.setText("医疗服务");
		btlYLFW.setSelection(false);
		btlYLFW.addSelectionListener(new SelectionAdapter()
		{
			public void widgetSelected(SelectionEvent e)
			{	
				if(prepreSQLCount>0)
				{
					remindsaveData();
				}
				RootLabel = "B";
				recreatTreeItem();
			}
		});
	}
	
	private void creatCancelBtn()
	{
		GridData GridBtn = new GridData(GridData.HORIZONTAL_ALIGN_END);
		GridBtn.horizontalSpan = 2;
		Button btlCancel = new Button(shell,SWT.None);	
		btlCancel.setText("  返回  ");
		btlCancel.setLayoutData(GridBtn);
		btlCancel.addSelectionListener(new SelectionAdapter()
		{
			public void widgetSelected(SelectionEvent e)
			{	//退出前先检查是否有数据未保存,若有则先提示用户保存数据
				if(prepreSQLCount>0)
				{
					remindsaveData();
				}
				shell.getDisplay().dispose();
				shell.dispose();
				FrmMenu menu=new FrmMenu();
				menu.main();
			}
		});
	}
	
	private void creatText()
	{   
		GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
		gridData.horizontalSpan = 2;
		Text txtExplain = new Text(shell,SWT.MULTI|SWT.BORDER)	;
		txtExplain.setLayoutData(gridData);
		String strTemp = "快捷键:\n";
		strTemp = strTemp + "Ctrl+Ins键	插入并行分类\n";
		strTemp = strTemp + "Ins键		插入子分类\n";
		strTemp = strTemp + "Del键		删除分类 \n";
		strTemp = strTemp + "Space键		编辑分类名称\n";
		strTemp = strTemp + "Enter键		结束编辑保存输入";
		txtExplain.setText(strTemp);
		txtExplain.setEditable(false);
	}
	
	private static int diplayMsg(String title, String txt, int flg)
	{
		int var;
		MessageBox msBox = new MessageBox(shell,flg);
		msBox.setText(title);
		msBox.setMessage(txt);
		var = msBox.open();
		return var;
	}

	
	/**
	* 函数名:creatTree
	* 编写者:祝鹏举
	* 功  能: 创建树控件,并显示数据
	* 输入参数:无
	* 输出参数:无
	* 备  注:2005.9.15
	*/	
	private void creatTree()
	{	//创建初始化Tree
		GridData GridTree = new GridData(GridData.FILL_BOTH);
		GridTree.horizontalSpan = 2;
		tree = new Tree(shell,SWT.SINGLE|SWT.BORDER);
		tree.setLayoutData(GridTree);
		this.creatTreeItem();
		
		//为Tree添加事件响应
		tree.addKeyListener(new KeyAdapter()
		{
			public void keyPressed(KeyEvent e)
			{
				//System.out.println("stateMask=" + e.stateMask + "keyCode=" + e.keyCode);
		    	//System.out.println("e.stateMask|e.keyCode=" + (e.stateMask|e.keyCode) );
				TreeItem selectNode = tree.getSelection()[0];
				switch(e.stateMask|e.keyCode)
				{
					//CTRL+INSERT为在当前位置插入节点
					case SWT.CTRL|SWT.INSERT:
							insertNode(selectNode);
							break;
					//INSERT为插入子节点
					case SWT.INSERT:
							insertChildNode(selectNode);
							break;
					//DEL为删除节点
					case SWT.DEL:
							delNode(selectNode);
							break;
							
					case SWT.CR://enter 的 keyCode 为13
							saveData();
							break;
					/*	说明:case 0:	是为了解决当用智能ABC输入法输入的时无响应的问题。
					 *	问题具体描述:用SAPCE键编辑节点,切换到智能ABC输入法输入节点名称
					 *	输入后,再次按SAPCE无响应,此时的stateMask,keyCode均为0,其他键不受影响。
				     */
					case 0:	
					case ' '://SAPCE为修改节点
							updateNode(selectNode);
							break;
				}
			}
		});
	}
	
	/**
	* 函数名:recreatTreeItem
	* 编写者:祝鹏举
	* 功  能: 重新为树填充具体的节点数据
	* 输入参数:无
	* 输出参数:无
	* 备  注:2005.9.15
	*/	
	private void recreatTreeItem()
	{
		tree.removeAll();
		creatTreeItem();
	}
		
	/**
	* 函数名:creatTreeItem
	* 编写者:祝鹏举
	* 功  能: 为树填充具体的节点数据
	* 输入参数:无
	* 输出参数:无
	* 备  注:2005.9.21
	*/	
	private void creatTreeItem()
	{	
		try
		{	
			db.getConnection();
			db.getTreeItemData(RootLabel);
		
			String lsNowDM;//存储当前节点代码
			TreeItem rootNode;//根节点
			TreeItem L1Node;//第一层子节点
			TreeItem L2Node;//第二层子节点
			rootNode = new TreeItem(tree,SWT.NULL);
			L1Node=rootNode;
			tree.removeAll();
			while(db.prs.next())
			{
				lsNowDM = db.prs.getString("FLDM").trim();
				switch(lsNowDM.length())
				{
					case 3:
							rootNode = new TreeItem(tree,SWT.NULL);
							rootNode.setText(db.prs.getString("FLMS"));
							rootNode.setData("FLDM",lsNowDM);
							rootNode.setData("FLMS",rootNode.getText());
							break;
					case 5:
							L1Node = new TreeItem(rootNode,SWT.NULL);
							L1Node.setText(db.prs.getString("FLMS"));
							L1Node.setData("FLDM",lsNowDM);
							L1Node.setData("FLMS",L1Node.getText());
							break;
					case 7:
							L2Node = new TreeItem(L1Node,SWT.NULL);
							L2Node.setText(db.prs.getString("FLMS"));
							L2Node.setData("FLDM",lsNowDM);
							L2Node.setData("FLMS",L2Node.getText());
							break;
					default://先不作处理
					}
			
			}
		}
		catch(SQLException se)
		{
	        System.err.println(se.getMessage());
		}

	}
	
	/**
	* 函数名:updateNode
	* 编写者:祝鹏举
	* 功  能: 编辑当前选中的节点名称
	* 输入参数:TreeItem selectNode
	* 输出参数:无
	* 备  注:2005.9.22
	*/	
	private void updateNode(TreeItem selectNode)
	{	
		FrmXMFLInput dlg = new FrmXMFLInput(this.shell);
		dlg.setText("编辑分类");
		dlg.setMessage("请输入新的分类名称:");
		dlg.setInput(selectNode.getData("FLMS").toString().trim());
		String tmp2 = dlg.open();
		if(tmp2 != null)

⌨️ 快捷键说明

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