`
karlhell
  • 浏览: 106591 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

SWT Table

阅读更多
SWT Table(Table是无法编辑的,若要创建出可编辑的table,需要自行使用Composite与GirdLayout来开发)
1.创建简单的Table
创建Table就是创建出Table类的对象,传入parent容器与样式属性。对该对象加入TableColumn这个类的对象来表示想要出现在table中的字段。

Table t=new Table(s,SWT.BORDER);

创建table字段主要有三个步骤:
1)对每个字段创建出TableColumn的对象。
2)使用SetText()对每个字段设置表头文字。
3)使用SetWidth()来设定每个字段的宽度。

TableColumn tc1=new TableColumn(t,SWT.CENTER);
  TableColumn tc2=new TableColumn(t,SWT.CENTER);
  TableColumn tc3=new TableColumn(t,SWT.CENTER);
  tc1.setText("First Name");
  tc2.setText("Last Name");
  tc3.setText("Address");
  tc1.setWidth(75);
  tc2.setWidth(70);
  tc3.setWidth(80);
  t.setHeaderVisible(true);

TableColumn支持三种样式:SWT.CENTER、SWT.RIGHT、SWT.LEFT,这些样式决定了文字在每个字段中显示方式。

创建完Table的表头后,需要通过TableItem类来加入数据到Table中。

TableItem item1=new TableItem(t,SWT.NONE);
  item1.setText(new String[]{"Tim","Hatton","Kentucky"});
  TableItem item2=new TableItem(t,SWT.NONE);
  item2.setText(new String[]{"Caitlyn","Warner","Ohio"});
  TableItem item3=new TableItem(t,SWT.NONE);
  item3.setText(new String[]{"Reese","Miller","Ohio"});
每个TableItem对象代表了table中的一行且行中的每一栏都有一个值。数据是通过String数组加入TableItem中的。

2.字段表头与网格线的显示
字段表头的显示: t.setHeaderVisible(true);
网格线的显示:   t.setLinesVisible(true);

3.强调选取行
在行中的某一栏被选取时,通过将跨字段的整行强调来给用户以整行被选取的视觉指示,可以使用SWT.FULL_SELECTION这个样式即可。

4.允许选取多行
Table默认情况下只被允许选取一行。可以设定SWT.MULTI样式来允许选取多行。在选取时必须通过按住ctrl键来进行多行选取。

5.程序化得选取项目
若table的项目是可以被选取的,那就一定有方法来判断哪个项目被选取的,或者可以在没有用户介入的情况下让某个项目被选取。
Table通过getSelection()这个方法返回当前被选取的TableItem(一行数据)对象的数组。
TableItem []ti=t.getSelection();
若Table是多重选取的,可以通过getSelectionIndices()返回int值的数组来以零基准索引指出哪些TableItem被选取。
int[] selected=t.getSelectionIndices();
若Table为单选的,可以通过getSelectionIndex()返回当前被选取项目的索引。
int selected=t.getSelectionIndex();

6.Check样式
可以通过SWT.CHECK样式在table项目前加上一个checkbox,可以通过setChecked()方法来让项目成为checked,通过getChecked()方法判断项目的状态。
item3.setChecked(true);
boolean checked=item3.getChecked();

7.改变背景颜色

通过使用setBackground()来指定个别TableItem的背景颜色:item2.setBackground(new Color(d,127,178,127));

8.创建可以搜素和替换的Table
虽然Table这个类内置了通过键入cell中的文字的第一个字符来寻找项目的功能,但这还不足以提供完整的Table搜索能力。还可以通过getText()和setText()对TableItem中的文字进行交互,完成寻找与替换功能。
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;


public class TableShell {
Display d;
Shell s;
public TableShell(){
  d=new Display();
  s=new Shell(d);
  s.setSize(250,200);
  s.setText("Table Shell");
  GridLayout g1=new GridLayout();
  g1.numColumns=4;
  s.setLayout(g1);
  //create a table
  final Table t=new Table(s,SWT.BORDER|SWT.FULL_SELECTION|SWT.CHECK|SWT.MULTI);
  //create table header
  final GridData gd=new GridData(GridData.FILL_BOTH);
  gd.horizontalSpan=4;
  t.setLayoutData(gd);
 
  TableColumn tc1=new TableColumn(t,SWT.LEFT);
  TableColumn tc2=new TableColumn(t,SWT.CENTER);
  TableColumn tc3=new TableColumn(t,SWT.CENTER);
  tc1.setText("First Name");
  tc2.setText("Last Name");
  tc3.setText("Address");
  tc1.setWidth(75);
  tc2.setWidth(70);
  tc3.setWidth(80);
  t.setHeaderVisible(true);
  t.setLinesVisible(true);
  //create table cell elements
  final TableItem item1=new TableItem(t,SWT.NONE);
  item1.setText(new String[]{"Tim","Hatton","Kentucky"});
  TableItem item2=new TableItem(t,SWT.NONE);
  item2.setText(new String[]{"Caitlyn","Warner","Ohio"});
  TableItem item3=new TableItem(t,SWT.NONE);
  item3.setText(new String[]{"Reese","Miller","Ohio"});
 
  final Text find=new Text(s,SWT.SINGLE|SWT.BORDER);
  final Text replace=new Text(s,SWT.SINGLE|SWT.BORDER);
  final Button b=new Button(s,SWT.PUSH|SWT.BORDER);
  b.setText("replace");
  b.addSelectionListener(new SelectionAdapter(){
   public void widgetSelected(SelectionEvent e){
    TableItem[] tia=t.getItems();
    for(int i=0;i<tia.length;i++){
     //搜索并替换第三列的数值
     if(tia[i].getText(2).equals(find.getText()))
      tia[i].setText(2,replace.getText());
    }
    
   }
  });
  s.open();
  while(!s.isDisposed())
   if(!d.readAndDispatch())
    d.sleep();
  d.dispose();
}
public static void main(String args[]){
  new TableShell();
}
}

要想将Table中的整行以新值取代旧值,可以再setText()中传入String对象的数组。数组中的每个元素会被用来替代调用setText()的TableItem中的单一cell:
String [] newText={"Nikki","Miller","Asia"};
item2.setText(newText);



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/freesnail/archive/2009/05/19/4202529.aspx
分享到:
评论

相关推荐

    swt table 实现换行

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

    SWT Table分页的工具类

    在SWT中,Table控件相当于其他GUI库中的数据表格,可以用来展示多行多列的数据。在处理大量数据时,为了提高性能和用户体验,通常会采用分页的方式来显示数据。本文将深入探讨如何使用SWT Table实现分页功能,并基于...

    SWT Table单元格编辑功能

    ### SWT Table单元格编辑功能详解 在Java图形用户界面(GUI)开发中,SWT(Standard Widget Toolkit)是一个广泛使用的工具包,它提供了丰富的控件集合,用于构建高性能的桌面应用程序。其中,`Table`控件是SWT中最...

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

    在SWT中,我们可以创建一个Shell对象作为应用程序的主窗口,然后在其中添加Table和Chart控件。Table控件可以用来显示数据库中的表格数据,支持排序、筛选等功能;而Chart控件则可以渲染从数据库获取的散点数据。 6...

    SWT tableEditor删除后刷新

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

    swt table 自己造个轮子

    在这个场景中,“swt table 自己造个轮子”指的是使用SWT(Standard Widget Toolkit)库来创建一个自定义的表格组件。SWT是Eclipse项目的一部分,它提供了一套原生的GUI组件,用于Java应用程序,提供了与操作系统更...

    swt table扩展

    本文将深入探讨SWT中的Table组件的扩展及其应用,同时参考了博客文章“swt table扩展”。 在SWT中,Table是一个非常重要的组件,用于展示多行多列的数据。它提供了类似电子表格的功能,包括排序、选择、编辑等。在...

    java swt table

    在深入探讨“Java SWT Table”这一主题之前,我们先来明确一下SWT(Standard Widget Toolkit)是什么以及它在Java开发中的角色。SWT是Eclipse平台的一部分,它提供了一组用于构建图形用户界面(GUI)的类库。与AWT和...

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

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

    swt类库Table

    【标题】"SWT类库Table" 在Java编程中,特别是涉及到图形用户界面(GUI)开发时,常常会使用到SWT(Standard Widget Toolkit)库。SWT 是一个开源的GUI库,它提供了丰富的控件集,使得开发者可以创建出性能高效且与...

    SWTUtils分页工具源码.zip

    SWT Table是SWT中用于显示表格数据的控件,它支持多列、排序、选择等功能。在分页场景下,用户可以在Table中浏览每一页的数据,并通过导航按钮进行翻页。 分页工具的核心通常包括以下几个部分: 1. **数据模型**:...

    使Excel嵌入到SWT窗口中

    使Excel嵌入到SWT窗口中 知识点一:Eclipse版本和jdk版本的选择 在本例中,我们使用的是Eclipse 3.3.1版本和jdk 5.0版本。Eclipse是一个开源的集成开发环境(IDE),它支持多种编程语言,包括Java、C++、Python等...

    SWT使用例子

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

    可以编辑的table

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

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

    Table table = new Table(parent, SWT.MULTI | SWT.FULL_SELECTION); TableViewer tableViewer = new TableViewer(table); ``` 2. **定义表格列** 使用`TableViewerColumn`来定义表格的列,可以设置列头文本、宽度...

    swt自适应,隔行换色

    为表列添加排序功能,列适应表格宽度,添加光棒以及各行颜色差效果,背景颜色,隔行换色

    SWT GridViewer_1.0包

    GridViewer设计用于显示和编辑结构化数据,可以看作是SWT Table的增强版,提供了更丰富的功能和定制选项。 **3. JFace Data Binding** JFace Data Binding是Eclipse中的一个模块,它简化了Java GUI中模型和视图之间...

    KTable for SWT 源代码+实例

    KTable是SWT中扩展JFace DataBinding库的一个组件,旨在增强标准的SWT Table控件的功能。它提供了一种更灵活的方式来处理表格数据,支持复杂的表格布局、行编辑、列排序和过滤,使得用户界面更加友好和高效。 2. *...

    网球循环赛日程表,包括swt编写的界面

    SWT库提供了丰富的组件,如表格(Table)、按钮(Button)、文本框(Text)等,可以用来构建这个日程表的界面。例如,你可以使用Table组件来显示比赛的日期、时间、场地以及对阵双方的信息。通过添加行和列,可以...

Global site tag (gtag.js) - Google Analytics