创建带有checkbox的树

项目中偶尔会使用Ext的一些组件,都是一些简单的应用,每次写不免有些浪费时间,自己封装组件有没那水准,索性把代码记下来,下次出现相同应用场景的时候可以直接拿过来用。

// ==== 使用Ext的展现方式 ===
	Ext.BLANK_IMAGE_URL = "/epstar/web/swms/client/resources/images/default/s.gif";
	if(win){
		win.show();
	}else{
		Ext.QuickTips.init();
		win = new Ext.Window({
			title: '添加课程到已有课组',
			width: 340,
			height: 380, 
			frame: true,
			layout: 'fit',
			modal:true,
			closeAction: 'hide',
			buttonAlign: 'center',
			items : new Ext.tree.TreePanel({
					id : 'courseTree',
					frame : false,
					rootVisible : false,
					autoScroll:true,
					root : new Ext.tree.AsyncTreeNode({
						id : 'root',
						text : 'root',
						expanded : true
					}),
					listeners : {
						'click' : function(node) {
							if (node.isLeaf()) {
								
							} else {
								node.toggle();
							}
						}
					},
					loader : new Ext.tree.TreeLoader({
						dataUrl : '/epstar/app/template.jsp?mainobj=EAMS/KKJHGL/V_PYGL_KKJHKZXZ&tfile=KKJH_KZXZWH/KKJH_KZXZWH_LOGIC',
						listeners : {
							'beforeload' : function(loader, node) {
								Ext.apply(loader.baseParams, {
									rootId : node.id,
									flag : 3,
									sXNXQDM : sXNXQDM
								});
							}
						}
					})
				}),
				buttons : [{
					text : '确定',
					handler : function() {
						var selNodes = Ext.getCmp("courseTree").getChecked();
						if(selNodes.length == 0){
							alert("提示:请选择需要补充课程的课组!");
							return;
						}
						if(selNodes.length > 1){
							alert("提示:请选择单个课组!");
							return;
						}
						var kzbh = "";
						Ext.each(selNodes, function(node){
							kzbh = node.id;
						});
						//异步调用
						Ext.Ajax.request({
							url: '/epstar/app/template.jsp?mainobj=EAMS/KKJHGL/V_PYGL_KKJHKZXZ&tfile=KKJH_KZXZWH/KKJH_KZXZWH_LOGIC',
							success: function(response){
								var rev = Ext.util.JSON.decode(response.responseText);
								if(rev.type){
									alert("添加成功!");
									win.close();
									Page_Reload();
								}else{
									alert("操作失败!" + rev.msg);
								}
							},
							failure: function(){
								alert("与后台交互失败!");
							},
							params: {jhidList: jhidList, kzbh:kzbh, xnxqdm:sXNXQDM, flag: "2"}
						});
					}
				},{
					text:'关闭',
					handler : function(){
						win.hide();
					}
				}],
				resizable : true
		});
		win.show();
	}
	// ==== the end ====

 展示效果:

 

经验需要积累:

1、实现某个功能的手段有很多,一条路走不通的时候可以换其他的路。例如今天对开课单位和学生院的判断,如果开课单位不是学生院或学生院隶属系则无法对其进行开放和关闭操作,在前台可以使用indexOf进行判断,但是存储过程中无法使用indexOf。那么也不一定非要自己实现一个indexOf,完全可以用下面的方式处理:

SELECT COUNT(1) INTO v_count FROM v_dm_dw_kkyx yx WHERE (yx.lsdwdm = in_xsyx OR yx.dwdm = in_xsyx) AND yx.dwdm = V_KKDW;
          IF v_count = 0 THEN 
             V_SFKF := '0';
          END IF;
 2、现场项目经理说了一句华尔街三原则:其一,不要花自己的钱办事。其二,永远不说出真相。其三,不要按规则办事。对于其一主要是要求我们在工作中要有协同工作的思想,不要什么事情都是自己一条龙服务。合理的需找资源也是分担风险也是很有必要的。其二,在客户现场工作的时候要向客户报喜不报忧,让客户对我们的项目充满信心,对于一些问题尽量将影响面缩小。其三,客户出现一些紧急问题时,不一定非要按照常规出牌,怎么处理方便快捷怎么来。哪怕是直接在数据库中给他处理了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在JTree中添加带有复选框的节点,可以使用JCheckBoxTree。JCheckBoxTree是一个自定义的Swing组件,它继承了JTree并添加了复选框功能。 以下是一个简单的示例,演示如何使用JCheckBoxTree: ```java import java.awt.BorderLayout; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; public class CheckBoxTreeExample extends JFrame { private JCheckBoxTree checkBoxTree; public CheckBoxTreeExample() { super("JCheckBoxTree Example"); // 创建根节点 DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root"); // 创建子节点 DefaultMutableTreeNode node1 = new DefaultMutableTreeNode("Node 1"); DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("Node 2"); DefaultMutableTreeNode node3 = new DefaultMutableTreeNode("Node 3"); // 将子节点添加到根节点 root.add(node1); root.add(node2); root.add(node3); // 创建复选框 checkBoxTree = new JCheckBoxTree(new DefaultTreeModel(root)); // 将复选框添加到窗口 add(new JScrollPane(checkBoxTree), BorderLayout.CENTER); // 设置窗口大小和位置 setSize(300, 400); setLocationRelativeTo(null); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } public static void main(String[] args) { new CheckBoxTreeExample(); } } ``` 在这个示例中,我们创建了一个根节点和3个子节点,并将它们添加到根节点中。然后,我们使用JCheckBoxTree构造函数创建了一个复选框,并将其添加到窗口中。最后,我们设置了窗口的大小和位置,并将其设置为可见。 注意,JCheckBoxTree是一个自定义组件,您需要将其添加到您的项目中才能使用。您可以从互联网上下载可用的库或自己编写代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值