Eclipse Nebula 部件入门

转自https://www6.software.ibm.com/developerworks/cn/education/opensource/os-eclipse-nebula/section13.html

 


developerWorks 中国  >  Open source  >

Eclipse Nebula 部件入门

Eclipse Nebula 的 Grid、CDateTime、CompositeTable、PGroup 和 PShelf 部件快速入门指南

developerWorks
前一页第 13 页,共 21 页后一页

文档选项
将打印机的版面设置成横向打印模式

打印本页


对本教程的评价

帮助我们改进这些内容


复选框、行标题、更改单元格颜色和单元格选择

行标题使您可以在 Grid 中设定每行的标签。默认情况下,每行的标题在 Grid 中是行的序号。要显示行标题,请在 Grid 上调用 setRowHeaderVisible(true)。每个 GridItem 都可以指定它自己的标题。通过在条目上调用 setHeaderText("Header text") 完成此过程。

您可以指定 GridColumn 作为包含一个复选框的列,呈现 Boolean 字段的值时该复选框会十分有用。下面的代码将创建一个包含复选框的 GridColumn。

GridColumn availableColumn = new GridColumn(grid, SWT.CHECK);

Grid 的特定单元格中的复选框的选中状态是由其相关的 GridItem 确定的。您可以通过调用相应的 GridItem 的 setChecked(int, boolean) 方法并传递列的索引和所需的 Boolean 值来设定状态。您可以通过在 GridItem 上调用 getChecked(int) 方法来检索复选框的值。文本也可以显示在复选框单元格中。这可以通过在 GridItem 上调用 setText(int, String) 方法并传递复选框条目的列的索引和将要显示的文本来完成。

您可以单独更改背景和文本的颜色,以及 Grid 中每个单元格的文本的字体。为此,在相应的 GridItem 上调用清单 5 中的方法。


清单 5. 更改颜色和字体
                    
item.setBackground(index, Color)
item.setFont(index, Font); 
		
item.setForeground(index, Color);

可以启用类似电子表单行为的 Grid 的优秀特性是能够启用单元格选择。可以选择单个单元格、一组单元格、整列和整行。默认情况下,Grid 被设为允许一次选择一行。选择多行可由 OR SWT.MULTI 以及 Grid 构造函数中提供的其余样式整数来指定。示例如下所示:

Grid grid = new Grid(shell, SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL);

要启用选择单个单元格或单元格组,请在 Grid 上调用 setCellSelectionEnabled(true)。默认情况下,所有列中的单元格都是可选择的。要禁止选择列中的单元格,请在相应的 GridColumn 上调用 setCellSelectionEnabled 方法并向其传递 false 值。要确定哪些单元格目前处于选中状态,请在 Grid 上调用 getCellSelection() 方法。将返回包含每个选中单元格坐标的 Point 对象数组。

清单 6 将演示如何使用行标题、复选框、单元格颜色和单元格选择。尝试执行单元格选择。单击列标题应当选择该列中的所有单元格。单击行标题应当选择该行中的所有单元格。注:第一列 Car Number 中的所有单元格应当都不会被选中。


清单 6. GridExample2
                    
public class GridExample2 {
	public static void main(String... args) {
		Display display = new Display();
		Shell shell = new Shell(display);
		shell.setLayout(new FillLayout());
                      Grid grid = new Grid(shell, SWT.BORDER | 
						SWT.V_SCROLL | SWT.H_SCROLL);
		grid.setHeaderVisible(true);
		grid.setRowHeaderVisible(true); // show Row Headers
		grid.setCellSelectionEnabled(true); //allow Cell Selection
	           Car car1 = new Car(133, "2007","Honda", 
				"CR-V",Car.CarType.SUV, 322, "Glacier Blue", true);
	           Car car2 = new Car(134, "2002","BMW", 
				"M Roadster",Car.CarType.CONVERTIBLE, 40233, "Red", false);
|-------10--------20--------30--------40--------50--------60--------70--------80--------9|
|-------- XML error:  The previous line is longer than the max of 90 characters ---------|
	           Car car3 = new Car(135, "2002","Acura", 
				"RSX",Car.CarType.COUPE, 53283, "Black", false);

                      GridColumn idColumn = new GridColumn(grid, SWT.NONE);
		idColumn.setText("Car Number");
		idColumn.setWidth(100);
		//don't allow cells in the idColumn to be selected
		idColumn.setCellSelectionEnabled(false);  
	
				
		GridColumn yearColumn = new GridColumn(grid, SWT.NONE);
		yearColumn.setText("Year");
		yearColumn.setWidth(50);

		GridColumn makeColumn = new GridColumn(grid, SWT.NONE);
		makeColumn.setText("Make");
		makeColumn.setWidth(100);

		GridColumn modelColumn = new GridColumn(grid, SWT.NONE);
		modelColumn.setText("Model");
		modelColumn.setWidth(100);

		GridColumn typeColumn = new GridColumn(grid, SWT.NONE);
		typeColumn.setText("Type");
		typeColumn.setWidth(100);
		
		GridColumn availableColumn = new GridColumn(grid, SWT.CHECK);
		availableColumn.setText("Available");
		availableColumn.setWidth(75);
		
		GridItem item1 = new GridItem(grid, SWT.NONE);
		item1.setHeaderText("Row Header");
		item1.setText(0, String.valueOf(car1.getCarNumber()));
		item1.setText(1,car1.getYear());
		item1.setText(2, car1.getMake());
		item1.setText(3, car1.getModel());
		item1.setText(4, car1.getCarType().toString());
		//set whether the check box in this column and row is checked
		item1.setChecked(5, car1.isAvailable()); 


		GridItem item2 = new GridItem(grid, SWT.NONE);
		item2.setText(0, String.valueOf(car2.getCarNumber()));
		item2.setText(1,car2.getYear());
		item2.setText(2, car2.getMake());
		item2.setText(3, car2.getModel());
		item2.setText(4, car2.getCarType().toString());
		item2.setChecked(5, car2.isAvailable());
		//set background to blue
		item2.setBackground(4,new Color(null, 0,0,255)); 
		//change font
		item2.setFont(4, new Font(null, "Arial", 12, SWT.BOLD | SWT.ITALIC));
		//set text color to red
		item2.setForeground(4, new Color(null, 255, 0, 0)); 
		
		GridItem item3 = new GridItem(grid, SWT.NONE);
		item3.setText(0, String.valueOf(car3.getCarNumber()));
		item3.setText(1, car3.getYear());
		item3.setText(2, car3.getMake());
		item3.setText(3, car3.getModel());
		item3.setText(4, car3.getCarType().toString());
		item3.setChecked(5, car2.isAvailable());
		
		shell.setSize(625, 200);
		shell.open();
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch())
				display.sleep();
		}
		display.dispose();
	}
}

在 Mac OS X 中运行示例将提供如下所示的结果。


图 17. GridExample2
GridExample2 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值