窗体程序 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 } }
相关推荐
SWT表格管理类,包括表头排序事件,table宽度自适应事件,隔行颜色事件
SWT表格管理类是Java编程中的一个重要组成部分,主要用于创建和管理具有高级特性的用户界面,如表头排序、隔行颜色以及表格宽度自适应。在本文中,我们将深入探讨SWT(Standard Widget Toolkit)框架下表格管理类的...
SWT提供了丰富的控件集,其中包括虚拟表格(Virtual Table)。虚拟表格是一种高效的数据展示方式,尤其在处理大量数据时,它可以显著提高性能。 虚拟表格的概念在于,它并不一次性加载所有行到内存中,而是根据需要...
4. **添加选择监听器**:`addSelectionListener(SelectionListener listener)` 为 `Link` 控件添加一个选择监听器。 - `listener`:监听器对象,用于处理用户的点击事件。 5. **设置链接颜色**:虽然 `Link` 类...
同时,为确保编辑器能够响应用户的输入,我们需为其添加修改监听器: ```java tablePrice.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { Control oldEditor = ...
根据提供的文件信息,可以看出本文主要讨论的是如何在 SWT (Standard Widget Toolkit) 的 Table 控件中实现文本换行的功能。SWT 是一个用于开发基于 Java 的桌面应用程序的工具包,它提供了丰富的用户界面组件来帮助...
标题"SWT tableEditor删除后刷新"涉及的问题可能是关于在删除TableEditor实例后,如何正确地更新或刷新表格显示。在使用TableEditor时,我们可能遇到的情况是,当编辑器被创建并应用到一个单元格后,如果用户进行了...
SWT提供了丰富的组件,包括按钮、文本框、滚动条、树形视图、表格、菜单等,这些组件都可以在64位Windows系统上原生渲染。此外,SWT还支持事件处理、布局管理以及对话框等特性,使得开发者可以方便地构建复杂的用户...
这个项目提供了一个基本的用户界面,用于执行对数据库中的数据进行添加、删除、修改和查询等基本操作。下面将详细介绍SWT和在Java中实现这些功能的相关知识点。 1. SWT (Standard Widget Toolkit): SWT是Eclipse...
在任何基于SWT的Java项目中,首要任务就是将SWT JAR文件添加到项目的Classpath中。这一步骤确保了编译器能够识别SWT类和方法。具体操作如下: - **创建Java项目**:首先,在IDE中创建一个新的Java项目。 - **指定...
在本文中,我们将深入探讨如何使用Java编程语言,结合Eclipse SWT库,SWTChart组件以及JDBC技术,来创建一个跨平台且安全的应用程序,该程序能够在同一个界面上同时展示散点图和数据表格。这有助于数据分析和可视化...
在SWT(Standard Widget Toolkit)中,事件处理是构建用户界面不可或缺的一部分。通过监听和响应各种用户交互,我们可以创建响应式且用户友好的应用程序。在给定的标题和描述中,我们关注的是鼠标的双击事件、键盘...
添加表格项的基本代码如下: ```java TableItem item1 = new TableItem(table1, SWT.NONE); ``` `SWT.NONE`表示不使用任何特殊样式。接着可以通过`setText()`方法设置表格项的内容: ```java item1.setText(new ...
标题中的“以SWT为界面,用POI读取、修改excel文件(源码)”指的是一个Java编程项目,它利用了两种主要的技术:SWT(Standard Widget Toolkit)和Apache POI,来创建用户界面并处理Microsoft Excel文件。下面将详细...
通过添加这个jar到项目的类路径,开发者就可以在他们的程序中使用SWT组件,如按钮、文本框、树视图等。 描述中提到的"src.zip"文件包含的是SWT的源代码,这对于开发者进行调试、学习和定制SWT行为至关重要。源代码...
4. **事件监听**:为SWT的表格添加事件监听器,如页码改变或每页记录数更改,以便更新查询并刷新表格显示。 5. **性能优化**:在处理大数据量时,避免一次性加载所有数据至关重要。使用分页可以减少内存占用,并...
3. **配置构建路径**:在Eclipse项目中,需要将SWT库的JAR文件添加到构建路径中,以便编译和运行时能正确引用。 4. **编写代码**:创建一个新的Java类,例如HelloSWT.java,导入必要的SWT包,然后编写显示GUI组件的...
### SWT开发参考文档知识点...SWT为Java开发者提供了一个强大且灵活的GUI开发工具箱,尤其适合那些需要高度定制化和高性能的应用程序。通过理解和掌握SWT的各种特性和组件,开发者可以构建出既美观又高效的用户界面。
SWT的核心在于它的控件库,包括按钮、文本框、列表、树、表格等基本元素。在这些控件中,"Swt常用控件中文教程 - E动中国.htm"很可能包含了关于以下控件的详细说明: 1. **Button**:按钮控件,可以响应用户的点击...
为了显示日历,我们使用`DateTime`控件,并设置其样式为`SWT.CALENDAR | SWT.BORDER`。这使得`DateTime`控件呈现为一个标准的日历视图,同时带有边框。 ```java final DateTime calendar = new DateTime(dialog, ...