SWT/JFace问题:如何在单元格中只显示图片

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SWT/JFace问题:如何在单元格中只显示图片相关的知识,希望对你有一定的参考价值。

TreeViewer中,如何在设置标签器时,如何使一个单元格被一张图片所充满?现在的结果总会留白
急求,多谢!
不是为了显示图片,图片可以显示
只是希望让图片充满一个单元格

《Eclipse swt/Jface核心编程》这本书我就在手上,没有找到

在TreeItem里创建TreeEditor可以显示图片

Tree tree=new Tree(compA[0],SWT.NONE);//创建树

  

  TreeItem item=new TreeItem(tree,SWT.NONE);

  

  item.setText("音乐");

  

        TreeItem child=new TreeItem(item,SWT.NONE);//在此TreeItem上加入图片

        

        TreeItem child1=new TreeItem(child,SWT.NONE);

        TreeItem child2=new TreeItem(child,SWT.NONE);

        child1.setText("安静");

        child2.setText("简单爱");

        

        TreeEditor editor=new TreeEditor(tree);//创建TreeEditor 

        

        editor.horizontalAlignment = SWT.LEFT;

        editor.minimumWidth = 50;

      

       

        CLabel lbl = new CLabel(tree, SWT.SHADOW_OUT);//创建控件,显示图片

        lbl.setSize(120, 30);

       

        lbl.setBackground(SWTResourceManager.getImage(TestTree.class, "/images/forward.gif"));

        editor.setEditor(lbl, child, 0); //为TreeEditor加在child上,child上加入控件lbl,lbl上显示图片

标签器的几个方法中

getImage 返回的是TreeItem之前的图像

getText 返回的是TreeItem的文本

都不能实现这种要求 

充满的话 创建一个Canvas  加上addPaintListener事件 重绘Image

 final Canvas lbl = new Canvas(tree, SWT.SHADOW_OUT);

        

        lbl.addPaintListener(new PaintListener()

        

         public void paintControl(PaintEvent e) 

          Image image=SWTResourceManager.getImage(TestTree.class, "/images/forward.gif");

    ImageData data=image.getImageData();

    ImageData data1=data.scaledTo(lbl.getSize().x, lbl.getSize().y);

    Image im=new Image(e.display,data1);

    e.gc.drawImage(im,0,0);

    im.dispose();

          

         

        );

        editor.setEditor(lbl, child, 0);

参考技术A 查查《Eclipse swt/Jface核心编程》,里面都有 参考技术B

在TreeItem里创建TreeEditor可以显示图片
Tree tree=new Tree(compA[0],SWT.NONE);//创建树
  
  TreeItem item=new TreeItem(tree,SWT.NONE);
  
  item.setText("音乐");
  
        TreeItem child=new TreeItem(item,SWT.NONE);//在此TreeItem上加入图片
        
        TreeItem child1=new TreeItem(child,SWT.NONE);
        TreeItem child2=new TreeItem(child,SWT.NONE);
        child1.setText("安静");
        child2.setText("简单爱");
        
        TreeEditor editor=new TreeEditor(tree);//创建TreeEditor 
        
        editor.horizontalAlignment = SWT.LEFT;
        editor.minimumWidth = 50;
      
       
        CLabel lbl = new CLabel(tree, SWT.SHADOW_OUT);//创建控件,显示图片
        lbl.setSize(120, 30);
       
        lbl.setBackground(SWTResourceManager.getImage(TestTree.class, "/images/forward.gif"));
        editor.setEditor(lbl, child, 0); //为TreeEditor加在child上,child上加入控件lbl,lbl上显示图片
标签器的几个方法中
getImage 返回的是TreeItem之前的图像
getText 返回的是TreeItem的文本
都不能实现这种要求 
充满的话 创建一个Canvas  加上addPaintListener事件 重绘Image
 final Canvas lbl = new Canvas(tree, SWT.SHADOW_OUT);
        
        lbl.addPaintListener(new PaintListener()
        
         public void paintControl(PaintEvent e) 
          Image image=SWTResourceManager.getImage(TestTree.class, "/images/forward.gif");
    ImageData data=image.getImageData();
    ImageData data1=data.scaledTo(lbl.getSize().x, lbl.getSize().y);
    Image im=new Image(e.display,data1);
    e.gc.drawImage(im,0,0);
    im.dispose();
          
         
        );
        editor.setEditor(lbl, child, 0);

以上是关于SWT/JFace问题:如何在单元格中只显示图片的主要内容,如果未能解决你的问题,请参考以下文章

SWT/JFace 中CheckBoxTreeViewer 子节点部分选中,父节点为半选状态,改用tree+checkox的方式如何实现?

SWT/Jface 写的 tableviewer对象中,怎么获取 所选行的数据对象。

swt/jface插件开发,怎样设置table表格的宽度?

在jface的tableviewer中,怎么通过双击事件得到点击的是哪个单元格?

如何制作在所有窗口分辨率下显示相似行为(布局)的 SWT/JFace 对话框

如何在表格的一个列单元格中输入字母,而在另一列单元格中只输入数字?