`

swt table扩展

阅读更多

扩展table类,在很多时候table都不止局限于文本的显示,可能还有可输入文本框,按钮,等控件。

在这点利用tableeditor可以解决,但是也是由于tableeditor比较冗余的代码,所以我把它封装在一个控件里面,同时也解决了获取item内容的问题


YtTableItem.java

在自定义的item中,会自动添加tableEditor,

/**
	 * 添加受控控件,只接受实现IYtTableSubComp的control
	 * */
	public void addChild(IYtTableSubComp control) {
		childContentMap.put(index, control);
		final TableEditor editor = new TableEditor(item.getParent());
		editor.setEditor((Control)control, item, index);
		editor.grabHorizontal = true;
		index++;
	}

	/**
	 * 生成包装好的text
	 * */
	public static IYtTableSubComp getTextSub(Composite parent , int style , String txt){
		YtTableSubComp su = new YtTableSubComp(parent);
		Text text = new Text(su, style);
		text.setText(txt);
		return su;
	}
	/**
	 * 生成包装好的btn
	 * */
	public static IYtTableSubComp getBtnSub(Composite parent , int style , String text){
		YtTableSubComp su = new YtTableSubComp(parent);
		Button btn = new Button(su, style);
		btn.setText(text);
		return su;
	}
/**
	 * 获取item的所有内容,每个用|隔开
	 * */
	public String getText() {
		StringBuilder sb = new StringBuilder();
		for (int i = 0; i < index; i++) {
			if (childContentMap.get(i) == null) {//如果是单一文字
				sb.append(item.getText(i) + "|");
			} else {//如果是控件
				IYtTableSubComp su = childContentMap.get(i);
				sb.append(su.getText() + "|");
			}
		}
		return sb.toString();
	}



YtTableSubComp.java中的实现
因为YtTableSubComp包装了多种子控件,所以用getText可以统一处理,不用再一个个的获取条目中特殊控件的值

/**
	 * 获取文本数据
	 * */
	public String getText(){
		Control con = getRealInst();
		if(con instanceof Button){
			Button btn = (Button)con;
			return btn.getSelection() + "";
		}else if(con instanceof Text){
			Text text = (Text)con;
			return text.getText() + "";
		}else if(con instanceof IYtTableSubComp){
			IYtTableSubComp su = (IYtTableSubComp)con;
			return su.getText();
		}
		return "";
	}



YtTableComp.java
包装了table的类,里面设置了换行换行要加\n,自动增高。

table.addListener(SWT.MeasureItem, paintListener);
		/**以下两个方法可以同时删除,但会印象到点击之后焦点的矩形*/
		table.addListener(SWT.PaintItem, paintListener);
		table.addListener(SWT.EraseItem, paintListener);


获取被选择的item的文本

/**
	 * 获取被选择的文本,每个item用SPLIST_SYM隔开
	 * */
	public String getSelectText(){
		selectText = new StringBuilder("");
		int[] t = getTable().getSelectionIndices();
		for(int i : t){
			selectText.append(itemList.get(i).getText()+SPLIST_SYM);
		}
		System.err.println(selectText);
		return selectText.toString();
	}



test.java

final YtTableComp tc = new YtTableComp(shell);
//设置表头文字
		tc.initColumn(new String[] { "测试啦", "出生时", "第三个", "第4个" });
		//设置宽度
		tc.setWidths(new int[] { 100, 150, 50, 100 });
		for (int i = 0; i < 3; i++) {
			/** 组装成一个item */
			final YtTableItem myItem = new YtTableItem(tc, 0);
			YtTableSubComp btn = (YtTableSubComp) YtTableItem.getBtnPushSub(tc.getTable());
			btn.setSize(30,20);
			btn.addListener(SWT.MouseUp, new Listener() {

				@Override
				public void handleEvent(Event event) {
					// TODO Auto-generated method stub
					System.err.println("我被点击了,执行事件");
				}
			});
			/** 将需要显示的特殊控件放入yttableItem去 */
			myItem.addChild(btn);
			myItem.addChild("啦啦啦啦" );
//myItem.addChild("啦啦啦啦\n"+i);//加\n就可以换行了
			myItem.addChild(YtTableItem.getTextSub(tc.getTable()));
			myItem.addChild(YtTableItem.getBtnSub(tc.getTable(), SWT.RADIO, "单选按钮"));

		}
		

		Button btn = new Button(shell, SWT.PUSH);
		btn.addSelectionListener(new SelectionListener() {

			@Override
			public void widgetSelected(SelectionEvent e) {
				//只要调用tc.getSelectText()就可以拿到选中的item的文本
				System.err.println(tc.getSelectText());;
			}

			@Override
			public void widgetDefaultSelected(SelectionEvent e) {
				// TODO Auto-generated method stub

			}
		});

		btn.setText("点我输出东西");




 

 

  • 大小: 12.7 KB
分享到:
评论

相关推荐

    JAVA SWT Table SWTChart Jdbc 数据 表格 散点图 界面

    SWTChart是SWT的一个扩展,它为开发者提供了创建高质量图表的能力,包括折线图、柱状图、饼图以及我们的重点——散点图。散点图是一种有效的数据可视化方式,尤其适合显示两个变量之间的关系。 3. **JDBC(Java ...

    swt类库Table

    - `Table.java`:这是`Table`类的源代码文件,可能包含类的完整定义,包括注释和实现细节,有助于理解和扩展`Table`类的功能。 通过深入理解这些文件和标签所代表的特性,开发者可以有效地利用SWT的`Table`类来构建...

    SWT扩展

    **SWT扩展:深入理解与应用** SWT(Standard Widget Toolkit)是Eclipse基金会开发的一个开源GUI库,它为Java应用程序提供了与操作系统本机UI组件的直接交互能力。SWT设计的目标是提供一个高效、可定制且功能丰富的...

    swt table 自己造个轮子

    - 开发者可能会扩展SWT.Table类,添加自定义的功能,如自定义的渲染器(CellRenderer)、编辑器(CellEditor)等。 - 可能会实现监听器,如SelectionListener、ModifyListener等,来处理用户交互事件。 - 数据...

    SWTUtils分页工具源码.zip

    SWTUtils是一个扩展了SWT功能的工具类库,其中包含了对分页功能的支持,简化了开发者实现分页逻辑的过程。 在描述中提到了"SWT Table技术",这表明这个工具可能与表格控件有关。SWT Table是SWT中用于显示表格数据的...

    swt原生库(用java开发swt用)

    例如,`Button`类用于创建按钮,`Text`类用于创建文本输入框,而`Table`和`Tree`类则分别用于创建数据列表和层次结构视图。 SWT与Eclipse RCP(Rich Client Platform)紧密集成,Eclipse RCP是一个构建桌面应用的...

    SWT表格管理类

    在SWT中,`Table`类用于创建表格,而`TableManager`通常是一个自定义的类,用于扩展和增强`Table`的基本功能,以便更好地满足开发者的需求。 1. **表头排序**: 表头排序允许用户通过点击列头来对表格数据进行升序...

    swt design for eclipse 3.2

    1. **SWT组件**:SWT提供了一系列的基本组件,如按钮(Button)、文本框(Text)、列表(List)、表格(Table)、树形视图(Tree)等,开发者可以使用这些组件来构建复杂的用户界面。每个组件都有丰富的API供开发者...

    可以编辑的table

    ### 可编辑的 SWT Table 实现详解 在 Eclipse SWT(Standard Widget Toolkit)中,`Table` 控件提供了显示数据列表的功能。然而,默认情况下,`Table` 是只读的,不允许用户进行编辑。为了使 `Table` 可编辑,SWT ...

    SWT API 帮助文档 及源码

    9. **可扩展性**:SWT 是Eclipse RCP(Rich Client Platform)的基础,可以与其他Eclipse插件无缝集成,提供强大的可扩展性和灵活性。 **源码分析** SWT 的源码是用Java编写的,通过JNI(Java Native Interface)...

    SWT/Jface API 3.4

    7. **Table and Tree Widgets**:SWT 提供了 Table 和 Tree 控件,允许用户显示和操作数据。在 JFace 中,TableViewer 和 TreeViewer 扩展了这些功能,添加了数据绑定和自定义列渲染等功能。 8. **Layout Managers*...

    SWT/JFace专题 --- SWT/JFace概述

    1. SWT控件:包括Button、Text、Table、Tree、Composite等基本和复杂的控件,以及如何使用它们构建用户界面。 2. JFace数据绑定:讲解如何使用IDataProvider和IStructuredModel来实现视图和数据之间的动态同步。 3. ...

    SWT开发参考文档

    - **充满式布局**:组件自动扩展以填满容器空间。 - **行列式布局**:按照行和列组织组件。 - **网格式布局**:使用网格单元格来定位组件。 - **表格式布局**:类似于HTML表格,用于表格布局。 #### 6. SWT事件监听...

    java eclipse swt教程

    1. **SWT组件**:SWT提供了各种基本的GUI组件,如按钮(Button)、文本框(Text)、列表(List)、树(Tree)、表格(Table)等。了解这些组件的用法是创建用户界面的基础。 2. **布局管理**:在SWT中,布局...

    Swt的API使用说明

    Swt JFace库扩展了Swt,提供了数据绑定功能,使得模型和视图之间的数据同步变得更加简单。 **9. 打印支持** Swt API也支持打印功能,`Printer`和`PrintDialog`类可以用来创建和配置打印任务。 **10. 定时器和计时...

    SWT API

    - **Table**和`Tree`:用于展示数据列表和层次结构的数据,可以通过`TableViewer`和`TreeViewer`进行扩展,实现更丰富的功能。 **3. JFace与SWT的关系** `JFace`是基于SWT的高级抽象层,它简化了SWT的使用,提供了...

    SWT基础代码涵盖其所有控件

    SWT提供了丰富的控件集,包括按钮(Button)、文本框(Text)、列表(List)、表格(Table)、树(Tree)、菜单(Menu)、对话框(Dialog)等。每个控件都有其特定的功能和用途,比如按钮用于执行操作,文本框用于...

    SWT教程

    - 自定义控件:学习如何创建自定义的SWT控件,扩展SWT的功能。 通过本教程的学习,你将掌握SWT的核心概念,能够使用SWT和JFace构建功能丰富的Java GUI应用程序。实践是检验真理的唯一标准,建议在学习过程中不断...

    SWT开发组件demo

    2. **扩展组件**:除了基本组件,SWT还提供了一些更复杂的组件,如树形视图(Tree),表格(Table),进度条(ProgressBar),滑块(Slider)等。这些组件增强了用户界面的交互性和信息展示能力。例如,`Tree`用于...

Global site tag (gtag.js) - Google Analytics