首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

学习定做表格树的项(二)

2012-10-28 
学习定制表格树的项(二)表格和树的项只可以有一个图像,而且这个图像只能够画在图像的前面。学习了定制表格

学习定制表格树的项(二)

表格和树的项只可以有一个图像,而且这个图像只能够画在图像的前面。

学习了定制表格和树的项后,觉得前面也可以定制多个图像了。

?

例子:

public class Snippet300 {private static int IMAGE_MARGIN = 2;private static Image xImage;private static Display display;public static void main(String [] args) {display = new Display();Shell shell = new Shell(display);shell.setBounds(10, 10, 350, 200);createImage();final Tree tree = new Tree(shell, SWT.CHECK);tree.setBounds(10, 10, 300, 150);TreeItem item = new TreeItem(tree, SWT.NONE);item.setImage(xImage);item.setText("root item");for (int i = 0; i < 4; i++) {TreeItem newItem = new TreeItem(item, SWT.NONE);newItem.setText("descendent " + i);//if (i % 2 == 0) {//newItem.setData(xImage);//}newItem.setImage(xImage);item.setExpanded(true);item = newItem;}treeAddListener(tree);shell.open();while (!shell.isDisposed()) {if (!display.readAndDispatch()) display.sleep();}xImage.dispose();display.dispose();}private static void createImage() {xImage = new Image (display, 16, 16);GC gc = new GC(xImage);gc.setForeground(display.getSystemColor(SWT.COLOR_RED));gc.drawLine(1, 1, 14, 14);gc.drawLine(1, 14, 14, 1);gc.drawOval(2, 2, 11, 11);gc.dispose();}private static void treeAddListener(final Tree tree) {Listener listener = new Listener() {public void handleEvent(Event event) {TreeItem item = (TreeItem)event.item;Image image = (Image)item.getImage();switch(event.type) {case SWT.MeasureItem:{if (image == null) break;event.width += 2*(image.getBounds().width + IMAGE_MARGIN);break;}case SWT.EraseItem:{event.detail &= ~SWT.FOREGROUND;break;}case SWT.PaintItem:{if (image == null) break;int x,y;int itemH = tree.getItemHeight();int imageH = image.getBounds().height;int imageW = image.getBounds().width;// draw the 1 imagex = event.x ;y = event.y + (itemH - imageH)/2;event.gc.drawImage(image, x, y);// draw the 2 imagex += IMAGE_MARGIN + imageW;event.gc.drawImage(image, x, y);// draw the stringString text = item.getText();x += IMAGE_MARGIN + imageW;y = event.y+2;event.gc.drawText(text, x, y);// draw the 3 imagex += event.width - imageW;y = event.y + (itemH - imageH)/2;event.gc.drawImage(image, x, y);break;}}}};tree.addListener(SWT.MeasureItem, listener);tree.addListener(SWT.EraseItem, listener);tree.addListener(SWT.PaintItem, listener);}}

?

改例子,仿照snippet220写的,运行效果,如图:


学习定做表格树的项(二)
?

?

热点排行