SWT - Table的使用

本文介绍使用Eclipse SWT创建Table的基本步骤,并演示如何通过监听鼠标事件实现与Table的交互,包括选择显示和数据的增删操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建一个Table的步骤如下:

1。 实例化Table,生成一张空表

2。 实例化TableColumn,添加列

3。 实例化TableItem,添加行

package org.vhow.swt.table;

import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
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;

public class SimpleTable
{
 private static int COLUMNS_CNT = 3;
 private static int ROWS_CNT = 3;
 
 public static void main(String[] args)
 {
  Display display = new Display();
  Shell shell = new Shell(display);
  shell.setLayout(new FillLayout());
  shell.setSize(300, 400);
  
  // ------------- core snippet start...
  
  // step1: create a Table object
  Table table = new Table(shell, SWT.None);
  
//  table.setHeaderVisible(true);
//  table.setLinesVisible(true); 
  
  // step2: add columns
  for (int i = 0; i < COLUMNS_CNT; i++)
  {
   new TableColumn(table, SWT.CENTER).setText("TableColumn" + (i + 1));
   table.getColumn(i).pack();
  }
  
  TableItem item = null;
  
  // step3: add rows
  for (int row = 0; row < ROWS_CNT; row++)
  {
   item = new TableItem(table, SWT.NONE);
   for (int col = 0; col < COLUMNS_CNT; col++)
   {
    item.setText(col, "TableItem-" + (row + 1) + "-" + (col + 1));
   }
  }
  
  // ------------- core snippet end.
  
  shell.pack();
  shell.open();
  
  while (!shell.isDisposed())
  {
   if (!display.readAndDispatch())
   {
    display.sleep();
   }
  }
  shell.dispose();
 }
}
运行以上代码,效果如下:

很多时候我们还需要监听end-user的选择:

		// add listener
		table.addMouseListener(new MouseListener()
		{
			@Override
			public void mouseUp(MouseEvent e) {}

			@Override
			public void mouseDown(MouseEvent e)
			{
				MessageDialog.openInformation(shell, "Message",
						table.getItem(table.getSelectionIndex()).getText());
			}

			@Override
			public void mouseDoubleClick(MouseEvent e) {}
		});
另外,我们还可以暴露接口,让用户来添加和删除表中数据:

		delButton.addListener(SWT.MouseUp, new Listener()
		{
			@Override
			public void handleEvent(Event event)
			{
				int selectionIndex = table.getSelectionIndex();
				if (selectionIndex != -1)
				{
					table.getItem(selectionIndex).dispose();
				}
			}
		});

		addButton.addListener(SWT.MouseUp, new Listener()
		{
			@Override
			public void handleEvent(Event event)
			{
				new TableItem(table, SWT.NONE);
			}
		});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值