`
一纸红颜岂值倾尽天下
  • 浏览: 28932 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

SWT 为表格添加删除修改link

    博客分类:
  • swt
阅读更多
窗体程序

package com.pcm.chni.recipereport.frame;

import java.util.ArrayList;

public class TableViewerDel {

	protected Shell shell;
	private String findLinkKey = "FindLink";
	private List listcuCustomers = new ArrayList();
	private ArrayList<Hyperlink> delList = new ArrayList<Hyperlink>();
	private final FormToolkit formToolkit = new FormToolkit(Display
			.getDefault());
	private Table table;
	private TableViewer tableViewer;
	private boolean finashaddlink=false;

	/**
	 * Launch the application.
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			TableViewerDel window = new TableViewerDel();
			window.open();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * Open the window.
	 */
	public void open() {
		Display display = Display.getDefault();
		createContents();
		shell.open();
		shell.layout();
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch()) {
				display.sleep();
			}
		}
	}

	/**
	 * Create contents of the window.
	 */
	protected void createContents() {
		shell = new Shell();
		shell.setSize(450, 300);
		shell.setText("SWT Application");

		tableViewer = new TableViewer(shell, SWT.BORDER
				| SWT.FULL_SELECTION);
		table = tableViewer.getTable();
		table.setLinesVisible(true);
		table.setHeaderVisible(true);
		table.setBounds(10, 27, 422, 191);
	
		TableColumn tableColumn = new TableColumn(table, SWT.NONE);
		tableColumn.setWidth(100);
		tableColumn.setText("数据显示");
		
		TableColumn tableColumn_1 = new TableColumn(table, SWT.NONE);
		tableColumn_1.setWidth(100);
		tableColumn_1.setText("删除");
		tableViewer.setContentProvider(new RecipereportTableViewContentProvider());//内容器
		tableViewer.setLabelProvider(new RecipereportTableViewLabelProvider());//标签器
		listcuCustomers.add("zhangsan");
		listcuCustomers.add("lis");
		listcuCustomers.add("wangwu");
		listcuCustomers.add("liuliu");
		listcuCustomers.add("qiqi");
		tableViewer.setInput(listcuCustomers);
		linkListener();
		
		table.addListener(SWT.MeasureItem, new Listener() {//表格监听器 表格画完后设置高度
			public void handleEvent(Event event) {
				event.height = 23;
			}
		});

		Listener delayInit = new Listener() {
			@Override
			public void handleEvent(Event arg0) {
				if(table.getItemHeight() < 23 || listcuCustomers.size() == 0 || finashaddlink){
					return ;
				}
				linkListener();
				finashaddlink = true;
			}
		};
		table.addListener(SWT.MeasureItem, delayInit);

	}

	
	public void linkListener() {

		deleteAllLinks();//删除所有的删除链接
		if (listcuCustomers != null && listcuCustomers.size() > 0) {
			for (int i = 0; i < listcuCustomers.size(); i++) {//获取集合中的数据
				TableItem itemi = table.getItem(i);//表格中一行数据

				final Hyperlink hprlnDeleO = formToolkit.createHyperlink(table,
						"删除", SWT.CENTER);//创建一个删除链接

				formToolkit.paintBordersFor(hprlnDeleO);
				TableEditor editor = new TableEditor(table);//编辑table
				editor.grabHorizontal = editor.grabVertical = true;
				editor.setEditor(hprlnDeleO, itemi, 1);//设置删除链接
				delList.add(hprlnDeleO);//将删除链接添加到delList中

				hprlnDeleO.addMouseListener(new MouseAdapter() {
					@Override
					public void mouseUp(MouseEvent e) {
						 TableItem xxx = table.getItem(new Point(e.x +
								 hprlnDeleO.getBounds().x, e.y +
								 hprlnDeleO.getBounds().y));
						 String hhlfir = (String) xxx.getData();//获取点击这一行的数据

						 listcuCustomers.remove(hhlfir);//点击删除remove listcuCustomers中的数据
						 tableViewer.setInput(listcuCustomers);//重新set数据
						 linkListener();//在每一行中添加删除链接
					}
				});
//				hprlnDeleO.setEnabled(true);//将删除按钮设置为启用
//				hprlnDeleO.setData(findLinkKey, hprlnDeleO);

			}
		}
	}

	protected void deleteAllLinks() {
		for (int i = 0; i < delList.size(); i++) {//循环 删除所有删除链接
			deleteLink(delList.get(i));
		}
		delList.clear();//清空list
	}

	protected void deleteLink(Hyperlink hprlnk_Delete) {
		try {
			if (hprlnk_Delete == null) {
				return;
			}
			hprlnk_Delete.dispose();//摧毁所有的删除链接
//			Hyperlink findlink = (Hyperlink) hprlnk_Delete.getData(findLinkKey);
//			if (findlink != null) {
//				findlink.dispose();
//			}

		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}
}

内容器

package com.pcm.chni.recipereport.provider;

import java.util.List;

import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.Viewer;

public class RecipereportTableViewContentProvider implements IStructuredContentProvider{
	@SuppressWarnings("unchecked")
	@Override
	public Object[] getElements(Object inputElement) {
		// TODO Auto-generated method stub
		if(inputElement instanceof List)
            return ((List)inputElement).toArray();
        else
            return new Object[0];
		 
    }
	

	@Override
	public void dispose() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void inputChanged(Viewer arg0, Object arg1, Object arg2) {
		// TODO Auto-generated method stub
		
	}
}


标签器

package com.pcm.chni.recipereport.provider;

import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.swt.graphics.Image;

import com.pcm.chni.userManage.model.Customer;

public class RecipereportTableViewLabelProvider implements ITableLabelProvider{

	@Override
	public Image getColumnImage(Object arg0, int arg1) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public String getColumnText(Object element, int index) {
		
		
		if(element instanceof Customer){
			Customer cu=(Customer)element;
			switch (index) {
			case 0:
				return cu.getCustomerid();
			case 1:
				return cu.getCustomername();
			case 2:
				return cu.getSexid().equals("1")?"男":"女";
			case 3:
				return cu.getBirthday();
			case 4:
				return cu.getMobile();
			case 5:
				return cu.getOrgname();
			case 6:
				return cu.getDocname();
			default:
				return "--";
			}
		}else if(element instanceof String){
			
			switch (index) {
			case 0:
				return (String)element;
			

			default:
				return "--";
			}
		}
		
		return null;
	}

	@Override
	public void addListener(ILabelProviderListener arg0) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void dispose() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public boolean isLabelProperty(Object arg0, String arg1) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public void removeListener(ILabelProviderListener arg0) {
		// TODO Auto-generated method stub
		
	}

}



 

0
4
分享到:
评论

相关推荐

    SWT表格管理类(包括表头排序,隔行颜色,表格宽度自适应)

    SWT表格管理类,包括表头排序事件,table宽度自适应事件,隔行颜色事件

    SWT表格管理类

    SWT表格管理类是Java编程中的一个重要组成部分,主要用于创建和管理具有高级特性的用户界面,如表头排序、隔行颜色以及表格宽度自适应。在本文中,我们将深入探讨SWT(Standard Widget Toolkit)框架下表格管理类的...

    swt虚拟表格.rar

    SWT提供了丰富的控件集,其中包括虚拟表格(Virtual Table)。虚拟表格是一种高效的数据展示方式,尤其在处理大量数据时,它可以显著提高性能。 虚拟表格的概念在于,它并不一次性加载所有行到内存中,而是根据需要...

    swt link类用法

    4. **添加选择监听器**:`addSelectionListener(SelectionListener listener)` 为 `Link` 控件添加一个选择监听器。 - `listener`:监听器对象,用于处理用户的点击事件。 5. **设置链接颜色**:虽然 `Link` 类...

    SWT Table单元格编辑功能

    同时,为确保编辑器能够响应用户的输入,我们需为其添加修改监听器: ```java tablePrice.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { Control oldEditor = ...

    swt table 实现换行

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

    SWT tableEditor删除后刷新

    标题"SWT tableEditor删除后刷新"涉及的问题可能是关于在删除TableEditor实例后,如何正确地更新或刷新表格显示。在使用TableEditor时,我们可能遇到的情况是,当编辑器被创建并应用到一个单元格后,如果用户进行了...

    swt-64.rar_64位swt_64的SWT_SWT64_swt.jar 64位_swt64位

    SWT提供了丰富的组件,包括按钮、文本框、滚动条、树形视图、表格、菜单等,这些组件都可以在64位Windows系统上原生渲染。此外,SWT还支持事件处理、布局管理以及对话框等特性,使得开发者可以方便地构建复杂的用户...

    SWT增删改查

    这个项目提供了一个基本的用户界面,用于执行对数据库中的数据进行添加、删除、修改和查询等基本操作。下面将详细介绍SWT和在Java中实现这些功能的相关知识点。 1. SWT (Standard Widget Toolkit): SWT是Eclipse...

    SWT配置 SWT配置 SWT配置 SWT配置 SWT配置

    在任何基于SWT的Java项目中,首要任务就是将SWT JAR文件添加到项目的Classpath中。这一步骤确保了编译器能够识别SWT类和方法。具体操作如下: - **创建Java项目**:首先,在IDE中创建一个新的Java项目。 - **指定...

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

    在本文中,我们将深入探讨如何使用Java编程语言,结合Eclipse SWT库,SWTChart组件以及JDBC技术,来创建一个跨平台且安全的应用程序,该程序能够在同一个界面上同时展示散点图和数据表格。这有助于数据分析和可视化...

    swt事件处理的编码实现

    在SWT(Standard Widget Toolkit)中,事件处理是构建用户界面不可或缺的一部分。通过监听和响应各种用户交互,我们可以创建响应式且用户友好的应用程序。在给定的标题和描述中,我们关注的是鼠标的双击事件、键盘...

    Advanced SWT

    添加表格项的基本代码如下: ```java TableItem item1 = new TableItem(table1, SWT.NONE); ``` `SWT.NONE`表示不使用任何特殊样式。接着可以通过`setText()`方法设置表格项的内容: ```java item1.setText(new ...

    以SWT为界面,用POI读取、修改excel文件(源码)

    标题中的“以SWT为界面,用POI读取、修改excel文件(源码)”指的是一个Java编程项目,它利用了两种主要的技术:SWT(Standard Widget Toolkit)和Apache POI,来创建用户界面并处理Microsoft Excel文件。下面将详细...

    swt sqlserver分页组件

    4. **事件监听**:为SWT的表格添加事件监听器,如页码改变或每页记录数更改,以便更新查询并刷新表格显示。 5. **性能优化**:在处理大数据量时,避免一次性加载所有数据至关重要。使用分页可以减少内存占用,并...

    swt教程 有关SWT怎么应用

    3. **配置构建路径**:在Eclipse项目中,需要将SWT库的JAR文件添加到构建路径中,以便编译和运行时能正确引用。 4. **编写代码**:创建一个新的Java类,例如HelloSWT.java,导入必要的SWT包,然后编写显示GUI组件的...

    SWT开发参考文档

    ### SWT开发参考文档知识点...SWT为Java开发者提供了一个强大且灵活的GUI开发工具箱,尤其适合那些需要高度定制化和高性能的应用程序。通过理解和掌握SWT的各种特性和组件,开发者可以构建出既美观又高效的用户界面。

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

    SWT的核心在于它的控件库,包括按钮、文本框、列表、树、表格等基本元素。在这些控件中,"Swt常用控件中文教程 - E动中国.htm"很可能包含了关于以下控件的详细说明: 1. **Button**:按钮控件,可以响应用户的点击...

    在swt开发中实现的一个小小的日历对话框

    为了显示日历,我们使用`DateTime`控件,并设置其样式为`SWT.CALENDAR | SWT.BORDER`。这使得`DateTime`控件呈现为一个标准的日历视图,同时带有边框。 ```java final DateTime calendar = new DateTime(dialog, ...

    swt-api swt DOC

    使用SWT API进行开发时,开发者需要了解如何创建窗口、添加控件、设置布局、响应用户事件,以及如何与其他Java库(如JFace)结合使用以提高代码的可读性和可维护性。"swt-api swt DOC"的CHM文档可能涵盖了这些内容,...

Global site tag (gtag.js) - Google Analytics