`
yianpuodiaotu
  • 浏览: 241550 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

SWT-Table按“行“进行编辑

阅读更多
package table;

/*
 * 通常在一个表格中的数据是一致的(同类型),所以我们通常做的table编辑工作是针对列的,
 * 如在tableviewer中使用cellEditor和cellModifyer来编辑表格。
 * 
 * 但是在某些情况下,我们需要对行进行编辑。本示例中是展示表格的单行是文本编辑,双行是下拉框编。,
 *
 */
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CCombo;
import org.eclipse.swt.custom.TableEditor;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Text;

public class TableEditoExamples {
	public static void main(String[] args) {
		Display display = new Display();
		Shell shell = new Shell(display);
		shell.setLayout(new FillLayout());
		
		// 下拉框items
		final String[] options = { "下拉框 1", "下拉框 2", "下拉框 3" };
		
		// 创建table 和 tableItems
		final Table table = new Table(shell, SWT.FULL_SELECTION| SWT.HIDE_SELECTION);
		TableColumn column1 = new TableColumn(table, SWT.NONE);
		TableColumn column2 = new TableColumn(table, SWT.NONE);
		for (int i = 0; i < 10; i++) {
			if (i % 2 == 1) {
				TableItem item = new TableItem(table, SWT.NONE);
				item.setText(new String[] { "item " + i, "文本框编辑" });
			} else {
				TableItem item = new TableItem(table, SWT.NONE);
				item.setText(new String[] { "item " + i, "下拉框 1" });
			}
		}
		column1.pack();
		column2.pack();

		final TableEditor editor = new TableEditor(table);
		// The editor must have the same size as the cell and must
		// not be any smaller than 50 pixels.
		editor.horizontalAlignment = SWT.LEFT;
		editor.grabHorizontal = true;
		editor.minimumWidth = 50;
		// editing the second column
		final int Edit_Table_Column = 1;

		table.addSelectionListener(new SelectionAdapter() {
			public void widgetSelected(SelectionEvent e) {
				// Clean up any previous editor control
				Control oldEditor = editor.getEditor();
				if (oldEditor != null)
					oldEditor.dispose();

				// Identify the selected row
				final TableItem item = (TableItem) e.item;
				if (item == null)
					return;

				int index = table.getSelectionIndex();
				
				// 单行文本框
				if (index % 2 == 1) {
					// The control that will be the editor must be a child of
					// the
					// Table
					Text newEditor = new Text(table, SWT.NONE);
					newEditor.setText(item.getText(Edit_Table_Column));
					newEditor.addModifyListener(new ModifyListener() {
						public void modifyText(ModifyEvent me) {
							Text text = (Text) editor.getEditor();
							editor.getItem().setText(Edit_Table_Column,
									text.getText());
						}
					});
					newEditor.selectAll();
					newEditor.setFocus();
					editor.setEditor(newEditor, item, Edit_Table_Column);
				} else { //// 双行下拉框
					final CCombo combo = new CCombo(table, SWT.READ_ONLY);
					for (int i = 0, n = options.length; i < n; i++) {
						combo.add(options[i]);
					}
					// Select the previously selected item from the cell
					combo.select(combo.indexOf(item.getText(Edit_Table_Column)));

					// Compute the width for the editor
					// Also, compute the column width, so that the dropdown fits
					editor.minimumWidth = combo.computeSize(SWT.DEFAULT,
							SWT.DEFAULT).x;
					table.getColumn(Edit_Table_Column).setWidth(
							editor.minimumWidth);

					// Set the focus on the dropdown and set into the editor
					combo.setFocus();
					editor.setEditor(combo, item, Edit_Table_Column);

					// Add a listener to set the selected item back into the
					// cell
					final int col = Edit_Table_Column;
					combo.addSelectionListener(new SelectionAdapter() {
						public void widgetSelected(SelectionEvent event) {
							item.setText(col, combo.getText());

							// They selected an item; end the editing session
							combo.dispose();
						}
					});
				}

			}
		});
		shell.setSize(200, 200);
		shell.open();

		while (!shell.isDisposed()) {
			if (!display.readAndDispatch())
				display.sleep();
		}
		display.dispose();
	}

}




 

 

  • 大小: 4.5 KB
  • 大小: 4.6 KB
分享到:
评论

相关推荐

    SWT Table单元格编辑功能

    本文将深入探讨SWT `Table`控件中的单元格编辑功能,并通过实例代码进行详细解析。 #### 1. 创建TableEditor `TableEditor`是SWT提供的一种编辑器,专门用于处理`Table`中的单元格编辑。在创建`TableEditor`时,需...

    swt table 实现换行

    根据提供的文件信息,可以看出本文主要讨论的是如何在 SWT (Standard Widget Toolkit) 的 Table 控件中实现文本换行的功能。SWT 是一个用于开发基于 Java 的桌面应用程序的工具包,它提供了丰富的用户界面组件来帮助...

    SWT-JFace-3.5-API.chm

    1. 控件体系:SWT定义了一系列的基础控件,如Button、Label、Text、Table等,每个控件都有其特定的功能和属性。 2. 事件模型:SWT采用事件驱动模式,通过添加监听器(如MouseListener、KeyListener等)来处理用户...

    SWT-resource address

    ### SWT (Standard Widget Toolkit) 资源地址与知识点总结 #### SWT介绍 SWT(Standard Widget Toolkit)是Eclipse平台的一部分,它提供了一组基于本地GUI库的跨平台小部件,可以创建高性能的用户界面。SWT的目标...

    java-swt-student.rar_FrmServer java_SWT_dataoperate.java_java

    在学生管理系统中,SWT的`Table`控件可以用来显示和编辑学生信息。开发者可以通过监听`Table`的事件,如点击、双击或按键,来响应用户的操作。同时,`Button`控件可以被用来触发特定的动作,如保存、删除或搜索学生...

    swt-designer开发教程

    1. **控件**:SWT提供了多种基本控件,如Button、Text、Label、Table、Tree等,每种控件都有特定的功能和用法。 2. **布局**:布局管理器如GridLayout、RowLayout和 MigLayout,可以帮助组织控件的位置和排列。 **...

    SWT tableEditor删除后刷新

    在SWT中,TableEditor是一个常用的组件,它允许我们在表格(Table)的单元格内放置编辑器,比如文本框、下拉框等,以便用户可以直接在表格中进行编辑。 标题"SWT tableEditor删除后刷新"涉及的问题可能是关于在删除...

    SWT增删改查

    当用户选择一行进行操作时,程序获取选中行的下标,然后将其作为参数传递给相应的SQL语句。 6. 表格数据显示与编辑: SWT提供了`Table`控件来显示和编辑表格数据。你可以通过`TableItem`来创建和修改表格行,`Table...

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

    SWT 是一个直接与操作系统进行交互的库,它提供了与本机平台兼容的窗口、按钮、列表等控件。SWT 的优势在于其性能高效,因为它是基于原生代码的,可以直接调用操作系统提供的GUI函数。这种直接的交互方式使得SWT创建...

    swt table 自己造个轮子

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

    可以编辑的table

    然而,默认情况下,`Table` 是只读的,不允许用户进行编辑。为了使 `Table` 可编辑,SWT 提供了 `TableEditor` 类,它可以在 `Table` 的单元格上显示一个编辑器控件,如文本框或组合框,允许用户直接在单元格中输入...

    Swt/Jface tableViewer入门教程三(加入在表格上直接编辑数据)

    在本文中,我们将深入探讨如何使用Swt/Jface库中的`TableViewer`组件来创建一个功能丰富的表格,并实现用户可以直接在表格上编辑数据的功能。Swt/Jface是Eclipse平台的一部分,提供了一套用于构建图形用户界面(GUI...

    swt table扩展

    总的来说,SWT Table的扩展涉及到多个方面,包括但不限于自定义列类型、实现复杂的排序、编辑功能和事件监听。熟练掌握这些技巧,能够帮助我们在Java GUI应用开发中创建出功能丰富且用户体验优秀的数据展示组件。

    sql-and-rcp-table.zip_Table_rcp

    当用户在表格中进行编辑时,这些更改需要同步回数据库,这通常通过监听器机制实现。 7. **性能优化**:考虑到可能存在的大量数据,应该优化SQL查询,避免一次性加载所有数据。可以使用分页、懒加载等策略,只在需要...

    eclipse-2019-64(集成SWT).zip

    Eclipse 是一个著名的开源集成开发环境(IDE),广泛用于Java应用程序的开发,但它也支持其他编程语言如...通过SWT,开发者可以创建与操作系统紧密集成的应用程序,同时利用Eclipse的丰富功能进行高效编码和项目管理。

    Eclipse SWT 开发参考

    - **RowLayout**:行列式布局,按行或列排列组件。 - **GridLayout**:网格布局,按照网格的形式排列组件。 - **TableLayout**:表格布局,按照表格的形式排列组件。 #### 6. SWT事件监听机制 SWT采用了事件驱动...

    SWT插件中文教程SWT常用方法

    本教程主要针对SWT插件的常用方法进行详细讲解,帮助开发者更好地理解和运用SWT。 首先,我们需要了解SWT插件在Eclipse开发环境中的地位。Eclipse是一个开放源代码的集成开发环境(IDE),而SWT插件则是其提供的一...

    Java swt完整教程

    SWT包括各种常见的GUI组件,如按钮(Button)、文本框(Text)、列表(List)、表格(Table)、树(Tree)等。每个组件都有相应的事件处理机制,开发者可以通过监听事件来实现用户交互。 4. SWT布局管理 SWT提供...

    SWT使用例子

    SWT(Standard Widget Toolkit)是Java中用于创建图形用户界面(GUI)的一种开源库,它是Eclipse项目的基础组件。SWT的设计目标是提供一个高效、本地化的GUI工具包,能够充分利用操作系统提供的功能,使得Java应用...

    SWT教程

    本教程将深入讲解SWT中的每个控件及其使用方法,帮助开发者更好地理解和应用SWT进行GUI开发。 1. **基础控件** - **按钮(Button)**:SWT提供多种按钮类型,如普通按钮、复选按钮和单选按钮,它们可以用于执行操作...

Global site tag (gtag.js) - Google Analytics