📄 frmxmfl.java
字号:
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 + -