SWT里的表格编程(翻译)

最全的SWT示例(绝对最全),上次文件损坏了,重传个 【上次上传的资源解压文件竟然是损坏的,对不起大家,这次重新上传一个,并且不要积分,希望能帮助大家】 这是我找到的最全的SWT示例,即使在官方网站上也非常难找,示例包括以下内容:SWT模式窗体,SWT浏览器,SWT树,SWT工具条,SWT画图工具,SWT图形,SWT各种布局,SWT剪贴板,SWT快捷键,SWT菜单,SWT文本编辑器,SWT中的任何一个控件这里面都有示例,所以非常全。 下载后先看运行效果图,由于示例太多,图中只包含了部分效果,swtexamplessrc.rar中包含所有的示例代码,拷贝到swt工程下即可运行,每一个包下的带有Example结尾的java类是带有main函数的,如:GraphicsExample.java 特别说明:由于SWT不支持MDI窗体,所以这里面没有MDI窗体的示例,需要找MDI窗体的朋友请不要下载。 上次上传的资源解压文件竟然是损坏的,对不起大家,这次重新上传一个,并且不要积分,希望能帮助大家 立即下载
//原文摘自《The Definitive Guide to SWT and JFace》
Tables
SWT使用Table、TableColumn和TableItem这3个独立的类来构建table.
这3个类都不需要被继承.

*****Creating Tables

Table类只提供了一个构造方法:
public Table(Composite parent, int style)

下表显示了style的作用,在构造方法中允许用逻辑与操作符表示style.
Style                Description
SWT.SINGLE            一次只能选择一行,默认的参数.
SWT.MULTI            一次能选择多行,一般是使用Ctrl+鼠标实现选择多行.
SWT.CHECK            将放置一个checkbox在每行的最开头处.注意checkbox
                    的选择状态与表格行是否处于被选择的状态无关.                    
SWT.FULL_SELECTION    当表格行被选择时,高亮显示,而不是默认的只显示第一列.
SWT.HIDE_SELECTIN    当表格所在的窗口不是当前的窗口时,除去被选择行的高亮
                    显示.默认的是无论表格所在窗口是否为当前窗口都使被选
                    择行处于高亮显示.
                    
*****Adding Columns

TableColumn类表示表格里的一列,你创建一列使用一个parent table, a style
,和一个可选的index.如果你不设置index,那么这列就将被默认把index设置为0.

TableColumn的构造方法:
public TableColumn(Table parent, int style)
public TableColumn(Table parent, int style, int index)

所有设置表格列的内容的对齐参数有:
SWT.LEFT    左对齐
SWT.CENTER    居中
SWT.RIGHT    右对齐

只能设置其中一个参数,如果设置了多于一个参数,后果将不确定.可以在构造方法后改
变对齐:通过setAlignment()方法.默认对齐是左对齐并且影响在这列中所有的行.
表格列能够显示标题.每个标题只能显示一行,它将按照ASC2码显示字符.
parent table可以通过setHeadersVisible()方法控制标题是否显示.

*****Adding Rows

构造方法:
TableItem(Table parent, int style)
TableItem(Table parent, int style, int index)

使用第2个参数在表格中插入行,将已经存在的行往后移,如果传入的参数超过范围就抛
出IllegalArgumentException.比如,如果没有行存在与table中,这样写的话:
new TableItem(table, SWT.NONE, 1);
结果如下:
java.lang.IllegalArgumentException: Index out of bounds
没有style提供给TableItem,所以你必须经常传递SWT.NONE参数以忽略其它值.
你可以改变TableItem的前景颜色和背景颜色,以整行宽或者一个单元格宽都可以.单
元格能够显示文字,图片,或者两者都显示.如果你两者都设置了,图片将显示在文字的左
方.

*****示例程序:
import org.eclipse.swt.*;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;

/**
 * Displays ASCII Codes
 */
public class AsciiTable {
  // The number of characters to show.
  private static final int MAX_CHARS = 128;
  // Names for each of the columns
  private static final String[] COLUMN_NAMES = { "Char", "Dec", "Hex", "Oct",
      "Bin", "Name"};

  // The names of the first 32 characters
  private static final String[] CHAR_NAMES = { "NUL", "SOH", "STX", "ETX", "EOT",
      "ENQ", "ACK", "BEL", "BS", "TAB", "LF", "VT", "FF", "CR", "SO", "SI",
      "DLE", "DC1", "DC2", "DC3", "DC4", "NAK", "SYN", "ETB", "CAN", "EM", "SUB",
      "ESC", "FS", "GS", "RS", "US", "Space"};

  // The font to use for displaying characters
  private Font font;

  // The background colors to use for the rows
  private Color[] colors = new Color[MAX_CHARS];

  /**
   * Runs the application
   */
  public void run() {
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setText("ASCII Codes");
    createContents(shell);
    shell.pack();
    shell.open();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch()) {
        display.sleep();
      }
    }
    // Call dispose to dispose any resources
    // we have created
    dispose();
    display.dispose();
  }

  /**
   * Disposes the resources created
   */
  private void dispose() {
    // We created this font; we must dispose it
    if (font != null) {
      font.dispose();
    }

    // We created the colors; we must dispose them
    for (int i = 0, n = colors.length; i < n; i++) {
      if (colors[i] != null) {
        colors[i].dispose();
      }
    }
  }

  /**
   * Creates the font
   */
  private void createFont() {
    // Create a font that will display the range
    // of characters. "Terminal" works well in
    // Windows
    font = new Font(Display.getCurrent(), "Terminal", 10, SWT.NORMAL);
  }

  /**
   * Creates the columns for the table
   *
   * @param table the table
   * @return TableColumn[]
   */
  private TableColumn[] createColumns(Table table) {
    TableColumn[] columns = new TableColumn[COLUMN_NAMES.length];
    for (int i = 0, n = columns.length; i < n; i++) {
      // Create the TableColumn with right alignment
      columns[i] = new TableColumn(table, SWT.RIGHT);

      // This text will appear in the column header
      columns[i].setText(COLUMN_NAMES[i]);
    }
    return columns;
  }

  /**
   * Creates the window's contents (the table)
   *
   * @param composite the parent composite
   */
  private void createContents(Composite composite) {
    composite.setLayout(new FillLayout());

    // The system font will not display the lower 32
    // characters, so create one that will
    createFont();

    // Create a table with visible headers
    // and lines, and set the font that we
    // created
    Table table = new Table(composite, SWT.SINGLE | SWT.FULL_SELECTION);
    table.setHeaderVisible(true);
    table.setLinesVisible(true);
    table.setRedraw(false);
    table.setFont(font);

    // Create the columns
    TableColumn[] columns = createColumns(table);

    for (int i = 0; i < MAX_CHARS; i++) {
      // Create a background color for this row
      colors[i] = new Color(table.getDisplay(), 255 - i, 127 + i, i);

      // Create the row in the table by creating
      // a TableItem and setting text for each
      // column
      int c = 0;
      TableItem item = new TableItem(table, SWT.NONE);
      item.setText(c++, String.valueOf((char) i));
      item.setText(c++, String.valueOf(i));
      item.setText(c++, Integer.toHexString(i).toUpperCase());
      item.setText(c++, Integer.toOctalString(i));
      item.setText(c++, Integer.toBinaryString(i));
      item.setText(c++, i < CHAR_NAMES.length ? CHAR_NAMES[i] : "");
      item.setBackground(colors[i]);
    }

    // Now that we've set the text into the columns,
    // we call pack() on each one to size it to the
    // contents
    for (int i = 0, n = columns.length; i < n; i++) {
      columns[i].pack();
    }

    // Set redraw back to true so that the table
    // will paint appropriately
    table.setRedraw(true);
  }

  /**
   * The application entry point
   *
   * @param args the command line arguments
   */
  public static void main(String[] args) {
    new AsciiTable().run();
  }
}
*****Sorting Tables
用户希望能通过点击表格标题使每行按照列排序,以升序或者降序交替.SWT表格不会自动
做这些事,但是可以通过编程实现,要实现排序,你可以按照下面的步骤:
1.为列标题栏增加一个listener,这样可以侦察到标题栏被鼠标点击.
2.取得现在要排序的信息.(按哪一列排序,按哪个方向排序--升序或降序)
3.对数据进行排序并且重新显示.

*****小结
如果你是一个Swing develloper,你一定会取笑SWT表格这种排序方法:取得数据,排序,
然后重新填入.用SWT编程意味着在widget level上,使用data(model),view,并且意
味着view和controller不可分割.象Swing的表格那样将data和view分离,并且用MVC
模式使用controller,使表格排序更加直接.
但是记住虽然SWT是在widget的level上,但是JFace提供了一个在SWT之上的MVC层次编
程,从而使在JFace中编程变得象Swing一样简单.
论文阅读 Quantum Convolutional neural network 在传统的局域序参量(如磁化强度 ⟨Xi⟩)无法有效区分某些拓扑相(如 Haldane 相)时,字符串序参量(SOP)提供了一种方法来识别这些相。字符串序参量的定义通常涉及多个远离的站点之间的长程关联,通常具有如下形式:Zi,Xk,Zj是泡利矩阵(Pauli operators)。指数项 eiπ∑k=ijXk表示一个相位因子。这意味着我们要计算两个远离站点 i,j 的Z 分量的关联,同时考虑它们之间的X 作用。这个非局域的字符串序参量可以用来检测对称保护拓扑(SPT)相。 阅读详情

相关推荐

保姆级教程:用Python和PyTorch复现PTB-XL心电信号分类论文(附完整代码)

本文提供了一份详细的PTB-XL心电信号分类教程,涵盖从数据预处理到模型优化的完整流程。通过PyTorch实现三种深度学习架构(Conv1D、SincNet和熵特征融合网络),并针对医疗AI特有的类别不平衡问题提供解决方案。教程包含可运行的代码示例,帮助开发者快速复现论文结果并应用于实际心电信号分析场景。

weixin_30555125的博客 405

SWT/Jface(1): 表格的创建和渲染

使用JFaceTableViewe。

622

别再手动切换了!用SP3485+三极管搞定RS485自动收发电路(附完整原理图)

本文详细介绍了如何利用SP3485芯片和三极管设计RS485自动收发电路,解决传统手动切换带来的IO资源占用和软件复杂度问题。通过原理分析、电路设计拆解和实战注意事项,帮助工程师打造稳定可靠的自动收发通信模块,显著提升系统性能和可靠性。

weixin_26833939的博客 509

swt 高级控件介绍(1)

在前面的文章中我们了解SWT的一些基本控件,现在我为大家介绍几种同样常用但稍微复杂点的控件1.tree: Styles: SINGLE(不能多选), MULTI(可以多选), CHECK(每个treeitem有复选框), FULL_SELECTION(选中时,选中整行), VIRTUAL(树是个虚拟的树,在得到用户、客户要求或者请求的时候才建立树的Item,而这些Item要设置有多少个子I...

djhloveql的博客 1016

大疆2025八月份校招硬件工程师笔试真题A卷题目分享

大疆2025年笔试真题解析

weixin_63651698的博客 1565

BDD测试之Behave使用入门

BDD测试(Behavior-Driven Development Testing)是一种基于“行为驱动开发”(BDD)理念。

想要成为酷盖但是失败的小明 580

Eclipse SWT 查看器(七)

首先申明下,本文为笔者学习《Eclipse插件开发学习笔记》的笔记,并加入笔者自己的理解和归纳总结。 1. 查看器 在查看器Viewer中,模型被称为input,查看器充当控制器的角色,而控件本身作为视图。当输入改变时,查看器负责改变控件的内容。 模型类ModelList, public class ModelList { public final static String PROPER...

假装你是大灰狼的专栏 1237

告别MRT!用ArcGIS脚本批量处理MODIS数据,从HDF到NDVI/ET成品图全流程(附Python代码)

本文详细介绍了使用ArcGIS Python脚本自动化处理MODIS数据的全流程,从HDF文件提取到生成NDVI/ET成品图。通过优化子数据集提取、智能镶嵌策略和投影转换等核心步骤,大幅提升处理效率,告别传统MRT工具的手工操作。附带的Python代码可直接应用于实际项目,特别适合批量处理大规模遥感数据。

weixin_30872337的博客 219

swt入门---http://www.blogjava.net/dreamstone/archive/2007/08/02/134074.html

swt入门 --常用组件的使用 swt的常用组件button ,text ,combo,list ,还有一些容器类composite ,group,这里选择几个,列写简单的用法不写解释了,因为代码很简单,而且代码上的注释足以说明.1,combo  和text package com.test;import org.eclipse.swt.SWT;import org.eclipse.swt....

weixin_34184158的博客 883

基于YOLOv11的手术器械计数系统:从数据集构建到Web应用部署

m2cai16-tool数据集:包含15种腹腔镜手术器械的标注图像Cholec80数据集:包含80个胆囊切除手术视频,标注了7种器械SurgicalTools数据集:包含超过10,000张手术器械图像,涵盖21类常见器械手术剪(Scissors)止血钳(Hemostat)持针器(Needle Holder)手术刀(Scalpel)镊子(Forceps)拉钩(Retractor)吸引器(Suction)

YOLO 394

MIKE21 教程 3.2 随空间变化的网格文件制作(.dfsu文件制作) 曼宁值网格文件制作

上一节讲解了如何制作时间序列文件。本节讲解如何制作仅随空间变化的文件。 目录 1 数据准备 1.1 基于地形设置 1.2 基于地形水深设置: 2 数据导入 3 数据导出

Hello Word 3940

SWT里的表格高级编程(1)(翻译)

//原文摘自《The Definitive Guide to SWT and JFace》Table ViewersSWT的表格widget,上一篇文章详细介绍了它的用法.你先生成一个Table,然后生成一个TableItem来把数据放置到表格中.你将直接管理每行、每列,需要的时候你还要亲自为数据排序,你将会发现非常麻烦.JFace的TableViewer解决了所有的问题.象其它的view

Unplugged 3599

正确解决Authentication plugin ‘caching _sha2_password’ cannot be loaded:异常的有效解决方法

正确解决Authentication plugin ‘caching _sha2_password’ cannot be loaded:异常的有效解决方法

wbajsjhhhhh的博客 1万+

【原创】SWT and Swing中文翻译稿

http://www.developer.com/java/other/article.php/10936_2179061_1more.asp?name=80x86&id=66444 翻译一篇文章,比较初级,但是写的很好看,文章中的native,比如native platform,我都翻译成了本地的,其实我第一次翻译东西,对单词的把握对我很难,我尽量先在baidu,google上搜索这个词的中文,

3305

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

swt-jace3

SWT……内幕?FooSleeper 翻译  (参与分:2434,专家分:640)   发表:2004-3-1 上午12:57   更新:2004-3-3 下午2:00   版本:1.1   阅读:2498次 原文:http://groups.yahoo.com/group/straight_talking_java/http://gro

§为艺术而技术§ 904

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Sacrilege –自定义SWT滚动条

SWT是本机OS小部件之上的薄抽象层。 如果您打算将应用程序与OS外观很好地集成在一起,那将是一件非常好的事情。 但是,作为一种折衷方案,这种方法大大限制了样式功能。 特别是,我感觉到本机SW​​T滚动条通常会干扰更精细的视图布局。 最近遇到此问题,我尝试了一个自定义SWT滚动条小部件。 这篇文章介绍了结果–一个简单的滑块控件,可用作SWT Slider替换或Scrollbar覆盖。 ...

最佳 Java 编程 872

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

SWT……内幕?

SWT……内幕? FooSleeper 翻译 原文:http://groups.yahoo.com/group/straight_talking_java/http://groups.yahoo.com/group/straight_talking_java/messages/24236翻译整理:FooSleeper最后修改:2004-03-03译注:本文来自straight_talk

病菌集中营 1651

[转载翻译]拖放法(Drag and Drop)-- 在SWT应用程序中添加“拖放”

[原创翻译]拖放法(Drag and Drop)-- 在SWT应用程序中添加“拖放”作者:Veronika Irvine, IBM OTI Labs   2003年8月25日翻译:Welfred 译者注:这篇文章详细介绍了在SWT下利用拖放操作和剪贴板来传递数据的方法,并且可以使得程序适应当前的操作系统平台,可以按照自定义传递的数据类型或者当前系统指定的数据类型进行传递。这篇文

2421

swt 内幕?

译注:本文来自straight_talking_java at yahoogroups.com 讨论组,已经是一年多前的文章。AlanWilliamson 是Java Developers Journal 的编辑,下文来自他在IBM 的一个消息来源。SWT 和Swing的论争我见过不少,Netbeans 和Eclipse 的也同样多。译者翻译此文并不是要激起什么争执,也不是支持哪一

轩 984

[转贴]隐藏在SWT/Swing背后的故事

这是从一个叫做 “择就居”的blog上摘录下来的。无从考证这个email是真是假,但是你可以打开它的原文链接(在Yahoo的一个讨论组里面)。如果这个email所述是真的话,那真的很有意思。没有人把SWT/Swing的故事说的再详细不过了。 ----------------------------------------------------------------------------- 译

kukoo的blog 1万+

SWT……内幕?(

【 以下文字转载自 J2SE 讨论区 】发信人: dev (无间~一念天堂,一念地狱), 信区: J2SE标 题: SWT……内幕?(zz)发信站: BBS 水木清华站 (Sun Jun 27 17:33:56 2004), 站内原文:http://groups.yahoo.com/group/straight_talking_java/http://groups.yahoo.com/group/

§为艺术而技术§ 1265

SWT的内幕

译注:本文来自straight_talking_java@yahoogroups.com讨论组,已经是一年多前的文章。Alan Williamson是Java Developers Journal的编辑,下文来自他在IBM的一个消息来源。SWT和Swing的论争我见过不少,Netbeans和Eclipse的也同样多。译者翻译此文并不是要激起什么争执,也不是支持哪一方(虽然我的确是站在SWT一边的)

1017

道听途说: SWT……内幕?

 SWT……内幕? FooSleeper 翻译 原文:http://groups.yahoo.com/group/straight_talking_java/http://groups.yahoo.com/group/straight_talking_java/messages/24236翻译整理:FooSleeper最后修改:2004-03-03译注:本文来自straight_talking_j

Tony's Blog 1054
上一篇: 3.24网址积累
下一篇: SWT里的表格高级编程(1)(翻译)
W1nt3rs
W1nt3rs 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄22年 977粉丝 301原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值