Eclipse Nebula 部件入门2

Eclipse Nebula 部件入门

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

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

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

打印本页


对本教程的评价

帮助我们改进这些内容


列组

Nebula Grid 使您可以把相关列分组到 GridColumnGroup 中。这是通过创建 GridColumnGroup 对象,指定 Grid 作为其在构造函数中的父对象和 SWT.NONE 的样式来完成的。然后将在组中创建列,把对新创建的 GridColumnGroup 的引用作为父对象传递给每个 GridColumn 的构造函数。

清单 8 中的示例是在先前示例基础上创建两个列组构建的:一个用于基本的汽车信息,一个用于汽车的详细信息。还添加了一些详细信息字段。


清单 8. GridExample4
                    
public class GridExample4 {
	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);
                      Car car1 = new Car(133, "2007","Chevy", 
						"Cobalt",Car.CarType.COUPE, \
						4321, "Yellow", true);
                      Car car2 = new Car(134, "2007","Chevy", 
						"Cobalt",Car.CarType.COUPE, \
						4321, "Yellow", true);
                      Car car3 = new Car(135, "2006","Ford", 
						"Focus",Car.CarType.COUPE, \
						15343, "Red", true);
                      Car car4 = new Car(136, "2006","Chrysler", 
						"Sebring",Car.CarType.SEDAN, \
						12932, "Black", false);
                      Car car5 = new Car(137, "2002","Ford", 
						"Mustang",Car.CarType.COUPE,\
						4342, "Red", true);

		GridColumn rentalTypeColumn = new GridColumn(grid, SWT.NONE);
		rentalTypeColumn.setText("Rental Grade");
		rentalTypeColumn.setWidth(100);
		rentalTypeColumn.setTree(true);
		
                      GridColumnGroup carGroup = new GridColumnGroup(grid, SWT.NONE);
		carGroup.setText("Automobile");
				
		GridColumn yearColumn = new GridColumn(carGroup, SWT.NONE);
		yearColumn.setText("Year");
		yearColumn.setWidth(50);

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

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

                      GridColumnGroup carDetailsGroup = 
						new GridColumnGroup(grid, SWT.NONE);
		carDetailsGroup.setText("Car Details");
		
		GridColumn idColumn = new GridColumn(carDetailsGroup, SWT.NONE);
		idColumn.setText("Car Number");
		idColumn.setWidth(100);
		
		GridColumn typeColumn = new GridColumn(carDetailsGroup, SWT.NONE);
		typeColumn.setText("Type");
		typeColumn.setWidth(100);

        GridColumn mileageColumn = 
		 new GridColumn(carDetailsGroup, SWT.NONE);
		mileageColumn.setText("Mileage");
		mileageColumn.setWidth(100);
		
		GridColumn colorColumn = new GridColumn(carDetailsGroup, SWT.NONE);
		colorColumn.setText("Color");
		colorColumn.setWidth(100);

        GridColumn availableColumn = 
		  new GridColumn(grid, SWT.CHECK | SWT.CENTER);
		availableColumn.setText("Available");
		availableColumn.setWidth(75);
		
		GridItem compactItem = new GridItem(grid, SWT.CENTER);
		compactItem.setText(0, "Compact");
		compactItem.setFont(new Font(null, "Arial", 16, SWT.ITALIC));
		compactItem.setColumnSpan(0, 8);
		compactItem.setBackground(0, new Color(null, 0,255,0));
		
		addCarRow(car1, compactItem);
		addCarRow(car2, compactItem);
		addCarRow(car3, compactItem);
		
		GridItem midSizedItem = new GridItem(grid, SWT.NONE);
		midSizedItem.setText(0, "Mid-Sized");
		midSizedItem.setFont(new Font(null, "Arial", 16, SWT.ITALIC));
		midSizedItem.setColumnSpan(0,8);
		midSizedItem.setBackground(0, new Color(null, 0, 255, 255));
		
		addCarRow(car4, midSizedItem);
		addCarRow(car5, midSizedItem);
		
		shell.setSize(850, 200);
		shell.open();
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch())
				display.sleep();
		}
		display.dispose();
	}

	private static void addCarRow(Car car, GridItem parentItem) {
		GridItem item1 = new GridItem(parentItem, SWT.NONE);
		item1.setText(1,car.getYear());
		item1.setText(2, car.getMake());
		item1.setText(3, car.getModel());
		item1.setText(4, String.valueOf(car.getCarNumber()));
		item1.setText(5, car.getCarType().toString());
		item1.setText(6, String.valueOf(car.getMileage()));
		item1.setText(7, car.getColor());
		item1.setChecked(8, car.isAvailable());
	}
}

运行示例将提供如下所示的结果。


图 19. GridExample4
GridExample4 

创建可展开的列组

除了分组相关列以外,您可以以允许展开和收缩、隐藏一些列的方式来创建 GridColumnGroup。为此,在构造 GridColumnGroup 时需要传递 SWT.TOGGLE 的样式。可以通过调用 setExpanded() 方法来设定 GridColumnGroup 最初是展开状态还是收缩状态。

您必须指定属于组的每个 GridColumn 是摘要字段,还是详细信息字段(或两者皆是)。这是通过分别调用 GridColumn 的 setDetail() 和 setSummary() 方法来完成的。默认情况下,假定任何未显式设为详细信息字段的列既是摘要列也是详细信息列,并以展开和收缩状态的 GridColumnGroup 显示。

清单 9 中的示例将创建一个激活的 GridColumnGroup,它将显示每辆汽车的详细信息。该组最初是处于收缩状态。


清单 9. GridExample5
                    
public class GridExample5 {
	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);

                      Car car1 = new Car(133, "2007","Chevy", 
						"Cobalt",Car.CarType.COUPE, 4321, "Yellow", true);
|-------10--------20--------30--------40--------50--------60--------70--------80--------9|
|-------- XML error:  The previous line is longer than the max of 90 characters ---------|
                      Car car2 = new Car(134, "2007","Chevy", 
						"Cobalt",Car.CarType.COUPE, 6435, "Yellow", true);
|-------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, "2006","Ford", 
						"Focus",Car.CarType.COUPE, 15343, "Red", true);
|-------10--------20--------30--------40--------50--------60--------70--------80--------9|
|-------- XML error:  The previous line is longer than the max of 90 characters ---------|
                      Car car4 = new Car(136, "2006","Chrysler", 
						"Sebring",Car.CarType.SEDAN, 12932, "Black", false);
|-------10--------20--------30--------40--------50--------60--------70--------80--------9|
|-------- XML error:  The previous line is longer than the max of 90 characters ---------|
                      Car car5 = new Car(137, "2002","Ford", 
						"Mustang",Car.CarType.COUPE,4342, "Red", true);
|-------10--------20--------30--------40--------50--------60--------70--------80--------9|
|-------- XML error:  The previous line is longer than the max of 90 characters ---------|

		GridColumn rentalTypeColumn = new GridColumn(grid, SWT.NONE);
		rentalTypeColumn.setText("Rental Grade");
		rentalTypeColumn.setWidth(100);
		rentalTypeColumn.setTree(true);
		
		GridColumnGroup carGroup = new GridColumnGroup(grid, SWT.NONE);
		carGroup.setText("Automobile");
				
		GridColumn yearColumn = new GridColumn(carGroup, SWT.NONE);
		yearColumn.setText("Year");
		yearColumn.setWidth(50);

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

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

        GridColumnGroup carDetailsGroup = 
			new GridColumnGroup(grid, SWT.TOGGLE);
		carDetailsGroup.setText("Car Details");
		// set the group to start off contracted
		carDetailsGroup.setExpanded(false);
		
		GridColumn idColumn = new GridColumn(carDetailsGroup, SWT.NONE);
		idColumn.setText("Car Number");
		idColumn.setWidth(100);
		
		GridColumn typeColumn = new GridColumn(carDetailsGroup, SWT.NONE);
		typeColumn.setText("Type");
		typeColumn.setWidth(100);
		// all of other the columns in the group are detail fields
		typeColumn.setDetail(true);
		typeColumn.setSummary(false);

        GridColumn mileageColumn = 
			new GridColumn(carDetailsGroup, SWT.NONE);
		mileageColumn.setText("Mileage");
		mileageColumn.setWidth(100);
		mileageColumn.setDetail(true);
		mileageColumn.setSummary(false);
		
		GridColumn colorColumn = new GridColumn(carDetailsGroup, SWT.NONE);
		colorColumn.setText("Color");
		colorColumn.setWidth(100);
		colorColumn.setDetail(true);
		colorColumn.setSummary(false);

        GridColumn availableColumn = 
			new GridColumn(grid, SWT.CHECK | SWT.CENTER);
		availableColumn.setText("Available");
		availableColumn.setWidth(75);
		
		GridItem compactItem = new GridItem(grid, SWT.CENTER);
		compactItem.setText(0, "Compact");
		compactItem.setFont(new Font(null, "Arial", 16, SWT.ITALIC));
		compactItem.setColumnSpan(0, 8);
		compactItem.setBackground(0, new Color(null, 0,255,0));
		
		addCarRow(car1, compactItem);
		addCarRow(car2, compactItem);
		addCarRow(car3, compactItem);
		
		GridItem midSizedItem = new GridItem(grid, SWT.NONE);
		midSizedItem.setText(0, "Mid-Sized");
		midSizedItem.setFont(new Font(null, "Arial", 16, SWT.ITALIC));
		midSizedItem.setColumnSpan(0,8);
		midSizedItem.setBackground(0, new Color(null, 0, 255, 255));
		
		addCarRow(car4, midSizedItem);
		addCarRow(car5, midSizedItem);
		
		shell.setSize(850, 200);
		shell.open();
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch())
				display.sleep();
		}
		display.dispose();
	}

	private static void addCarRow(Car car, GridItem parentItem) {
		GridItem item1 = new GridItem(parentItem, SWT.NONE);
		item1.setText(1,car.getYear());
		item1.setText(2, car.getMake());
		item1.setText(3, car.getModel());
		item1.setText(4, String.valueOf(car.getCarNumber()));
		item1.setText(5, car.getCarType().toString());
		item1.setText(6, String.valueOf(car.getMileage()));
		item1.setText(7, car.getColor());
		item1.setChecked(8, car.isAvailable());
	}
}

运行示例将提供如下所示的结果(这里所示的是其处于展开状态)。


图 20. GridExample5
GridExample5 

添加一个摘要列

如前述,您可以指定 GridColumnGroup 中一个或多个 GridColumn 作为摘要字段。此字段对于显示摘要值和允许用户交替打开详细信息非常有用。清单 10 将创建另一个 GridColumnGroup,它将在收缩时显示日租金的总价格。展开时,将显示这个总价的详细信息以及 Total Price 列。注意:Total Price 列是怎样被指定为摘要列和详细信息列。如果发送 false 作为此 GridColumn 上的 setDetail() 方法的参数,则在展开组时 Total Price 列将消失。


清单 10. GridExample6
                    
public class GridExample6 {
	public static void main(String... args) {
		Display display = new Display();
		Shell shell = new Shell(display);
		shell.setLayout(new FillLayout());

		//defaults to SWT.SINGLE - other options MULTI, NO_FOCUS, CHECK

                      Grid grid = new Grid(shell, SWT.SINGLE | 
						SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
		grid.setHeaderVisible(true);

                      Car car1 = new Car(133, "2007","Chevy", 
						"Cobalt",Car.CarType.COUPE, 4321, "Yellow", true, 122.00, .075);
|-------10--------20--------30--------40--------50--------60--------70--------80--------9|
|-------- XML error:  The previous line is longer than the max of 90 characters ---------|
                      Car car2 = new Car(134, "2007","Chevy", 
						"Cobalt",Car.CarType.COUPE, 6435, "Yellow", true, 122.00, .075);
|-------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, "2006","Ford", 
						"Focus",Car.CarType.COUPE, 15343, "Red", true, 122.00, .075);
|-------10--------20--------30--------40--------50--------60--------70--------80--------9|
|-------- XML error:  The previous line is longer than the max of 90 characters ---------|
                      Car car4 = new Car(136, "2006","Chrysler", 
						"Sebring",Car.CarType.SEDAN, 12932, "Black", false, 144.00, .075);
|-------10--------20--------30--------40--------50--------60--------70--------80--------9|
|-------- XML error:  The previous line is longer than the max of 90 characters ---------|
                      Car car5 = new Car(137, "2002","Ford", 
						"Mustang",Car.CarType.COUPE,4342, "Red", true, 144.00, .075);
|-------10--------20--------30--------40--------50--------60--------70--------80--------9|
|-------- XML error:  The previous line is longer than the max of 90 characters ---------|

		GridColumn rentalTypeColumn = new GridColumn(grid, SWT.NONE);
		rentalTypeColumn.setText("Rental Grade");
		rentalTypeColumn.setWidth(100);
		rentalTypeColumn.setTree(true);
		
		GridColumnGroup carGroup = new GridColumnGroup(grid, SWT.NONE);
		carGroup.setText("Automobile");
				
		GridColumn yearColumn = new GridColumn(carGroup, SWT.NONE);
		yearColumn.setText("Year");
		yearColumn.setWidth(50);

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

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

                      GridColumnGroup carDetailsGroup = 
						new GridColumnGroup(grid, SWT.TOGGLE);
		carDetailsGroup.setText("Car Details");
		carDetailsGroup.setExpanded(false);
		
		GridColumn idColumn = new GridColumn(carDetailsGroup, SWT.NONE);
		idColumn.setText("Car Number");
		idColumn.setWidth(100);
		
		GridColumn typeColumn = new GridColumn(carDetailsGroup, SWT.NONE);
		typeColumn.setText("Type");
		typeColumn.setWidth(100);
		typeColumn.setDetail(true);
		typeColumn.setSummary(false);

                      GridColumn mileageColumn = 
						new GridColumn(carDetailsGroup, SWT.NONE);
		mileageColumn.setText("Mileage");
		mileageColumn.setWidth(100);
		mileageColumn.setDetail(true);
		mileageColumn.setSummary(false);
		
		GridColumn colorColumn = new GridColumn(carDetailsGroup, SWT.NONE);
		colorColumn.setText("Color");
		colorColumn.setWidth(100);
		colorColumn.setDetail(true);
		colorColumn.setSummary(false);
		

                      GridColumnGroup pricingGroup = 
						new GridColumnGroup(grid, SWT.TOGGLE);
		pricingGroup.setText("Pricing");
		pricingGroup.setExpanded(false);

                      GridColumn dailyRentalColumn = 
						new GridColumn(pricingGroup, SWT.NONE);
		dailyRentalColumn.setText("Daily Rental");
		dailyRentalColumn.setWidth(100);
		dailyRentalColumn.setDetail(true);
		dailyRentalColumn.setSummary(false);
		
		GridColumn taxColumn = new GridColumn(pricingGroup, SWT.NONE);
		taxColumn.setText("Tax");
		taxColumn.setWidth(100);
		taxColumn.setDetail(true);
		taxColumn.setSummary(false);

                      GridColumn totalPriceColumn = 
						new GridColumn(pricingGroup, SWT.NONE);
		totalPriceColumn.setText("Total");
		totalPriceColumn.setWidth(100);
		totalPriceColumn.setDetail(true);
		totalPriceColumn.setSummary(true);
                      GridColumn availableColumn = 
						new GridColumn(grid, SWT.CHECK | SWT.CENTER);
|-------10--------20--------30--------40--------50--------60--------70--------80--------9|
|-------- XML error:  The previous line is longer than the max of 90 characters ---------|
		availableColumn.setText("Available");
	           availableColumn.setWidth(75);
		
		GridItem compactItem = new GridItem(grid, SWT.CENTER);
		compactItem.setText(0, "Compact");
		compactItem.setFont(new Font(null, "Arial", 16, SWT.ITALIC));
		compactItem.setColumnSpan(0, 11);
		compactItem.setBackground(0, new Color(null, 0,255,0));
		
		addCarRow(car1, compactItem);
		addCarRow(car2, compactItem);
		addCarRow(car3, compactItem);
		
		GridItem midSizedItem = new GridItem(grid, SWT.NONE);
		midSizedItem.setText(0, "Mid-Sized");
		midSizedItem.setFont(new Font(null, "Arial", 16, SWT.ITALIC));
		midSizedItem.setColumnSpan(0,11);
		midSizedItem.setBackground(0, new Color(null, 0, 255, 255));
		
		addCarRow(car4, midSizedItem);
		addCarRow(car5, midSizedItem);
		
		shell.setSize(850, 200);
		shell.open();
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch())
				display.sleep();
		}
		display.dispose();
	}

	private static void addCarRow(Car car, GridItem parentItem) {
		NumberFormat formatter = NumberFormat.getCurrencyInstance();
		GridItem item1 = new GridItem(parentItem, SWT.NONE);
		item1.setText(1,car.getYear());
		item1.setText(2, car.getMake());
		item1.setText(3, car.getModel());
		item1.setText(4, String.valueOf(car.getCarNumber()));
		item1.setText(5, car.getCarType().toString());
		item1.setText(6, String.valueOf(car.getMileage()));
		item1.setText(7, car.getColor());
		item1.setText(8, formatter.format(car.getDailyRentalFee()));
		item1.setText(9, formatter.format(car.calculateTax()));
		item1.setText(10, formatter.format(car.getTotalFee()));
		item1.setChecked(11, car.isAvailable());
	}
}

运行示例将提供如下所示的结果(这里所示的是其处于收缩状态)。


图 21. GridExample6
GridExample6 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值