`

SWT JFACE 关于Tree上加celleditor的代码摘录

J# 
阅读更多
这里是摘录一些 SWT/JFACE RCP项目中 比较有用的小代码。


右键复杂菜单
final MenuManager menuMgr = new MenuManager("#popupMenu");
        menuMgr.setRemoveAllWhenShown(true);
        reqTreeViewer.getControl().setMenu(menuMgr.createContextMenu(reqTreeViewer.getControl()));
        menuMgr.addMenuListener(new IMenuListener(){

            public void menuAboutToShow(IMenuManager manager) {
                manager.add(new IAction());
                   
            }
            
 });


TREE加Tex EDITOR
final TreeItem[]lastItem = new TreeItem[1];
        final TreeEditor editor = new TreeEditor(reqTree);
        reqTree.addListener(SWT.Selection, new Listener() {
            public void handleEvent(Event event) {
              final TreeItem item = (TreeItem) event.item;
              if (item != null && item == lastItem[0]) {
                boolean isCarbon = SWT.getPlatform().equals("carbon");
                final Composite composite = new Composite(reqTree, SWT.NONE);
                if (!isCarbon)
                  composite.setBackground(new Color(null,0,0,0));
                final Text text = new Text(composite, SWT.NONE);
                final int inset = isCarbon ? 0 : 1;
                    composite.addListener(SWT.Resize, new Listener() {
                        public void handleEvent(Event e) {
                            Rectangle rect = composite.getClientArea();
                            text.setBounds(rect.x + inset, rect.y + inset, rect.width - inset * 2, rect.height - inset * 2);
                        }
                    }
                
                );
                Listener textListener = new Listener() {
                  public void handleEvent(final Event e) {
                    switch (e.type) {
                    case SWT.FocusOut:
                      item.setText(1,text.getText());
                      composite.dispose();
                      break;
                    case SWT.Verify:
                      String newText = text.getText();
                      String leftText = newText.substring(0, e.start);
                      String rightText = newText.substring(e.end, newText.length());
                      GC gc = new GC(text);
                      Point size = gc.textExtent(leftText + e.text + rightText);
                      gc.dispose();
                      size = text.computeSize(size.x, SWT.DEFAULT);
                      editor.horizontalAlignment = SWT.LEFT;
                      Rectangle itemRect = item.getBounds(),
                      rect = reqTree.getClientArea();
                      editor.minimumWidth = Math.max(size.x, itemRect.width) + inset * 2;
                      int left = itemRect.x,
                      right = rect.x + rect.width;
                      editor.setColumn(1);
                      editor.minimumWidth = Math.min(editor.minimumWidth, right - left);
                      editor.minimumHeight = size.y + inset * 2;
                      editor.layout();
                      break;
                    case SWT.Traverse:
                      switch (e.detail) {
                      case SWT.TRAVERSE_RETURN:
                        item.setText(1,text.getText());
                      // FALL THROUGH
                      case SWT.TRAVERSE_ESCAPE:
                        composite.dispose();
                        e.doit = false;
                      }
                      break;
                    }
                  }
                };
                text.addListener(SWT.FocusOut, textListener);
                text.addListener(SWT.Traverse, textListener);
                text.addListener(SWT.Verify, textListener);
                
               
                
                editor.setEditor(composite, item);
                if(item.getData() instanceof IRequestParameter){
                    IRequestParameter param= (IRequestParameter)item.getData();
                    text.setText(getFormatStringValue(param));
                }
                
                text.selectAll();
                text.setFocus();
              }
              lastItem[0] = item;
            }
          });
     



TREE加BUTTON
final Tree tree = new Tree(shell, SWT.SINGLE);
    for (int i = 0; i < 3; i++) {
      TreeItem iItem = new TreeItem(tree, SWT.NONE);
      iItem.setText("Item " + (i + 1));
      for (int j = 0; j < 3; j++) {
        TreeItem jItem = new TreeItem(iItem, SWT.NONE);
        jItem.setText("Sub Item " + (j + 1));
        for (int k = 0; k < 3; k++) {
          new TreeItem(jItem, SWT.NONE).setText("Sub Sub Item " + (k + 1));
        }
        jItem.setExpanded(true);
      }
      iItem.setExpanded(true);
    }

    final TreeEditor editor = new TreeEditor(tree);
    editor.horizontalAlignment = SWT.LEFT;
    editor.grabHorizontal = true;

    tree.addMouseListener(new MouseAdapter() {
      public void mouseDown(MouseEvent event) {
        final TreeItem item = tree.getSelection()[0];

        final Button bn = new Button(tree, SWT.NONE);
        bn.setText("click");
        bn.setFocus();

        bn.addSelectionListener(new SelectionListener() {

          public void widgetSelected(SelectionEvent arg0) {
            int style = SWT.ICON_QUESTION | SWT.YES | SWT.NO;

            MessageBox messageBox = new MessageBox(shell, style);
            messageBox.setMessage("Message");
            int rc = messageBox.open();

            item.setText(rc + "");
            bn.dispose();
          }

          public void widgetDefaultSelected(SelectionEvent arg0) {
          }
        });

        editor.setEditor(bn, item);
      }
    });



TREE加LABEL
        reqTree.addMouseListener(new MouseAdapter(){
            public void mouseDown(MouseEvent event){
                clearTmpSelections();
                final TreeItem item = reqTree.getSelection()[0];
                final Label bn=new Label(reqTree,SWT.None);
                bn.setFocus();
                bn.setVisible(false);
                if(item.getData() instanceof IRequestParameter){
                    IRequestParameter param=(IRequestParameter)item.getData();
                    bn.setText(getFormatStringValue(param));
                }
               
                bn.addListener(SWT.MouseDoubleClick, new Listener(){
                   
                    public void handleEvent(Event event) {
                        System.out.println("Dasdasd");
                    }
                    
                });
                tmpLabels.add(bn);
           
                bn.addListener(SWT.MouseDoubleClick, new Listener() {

                    public void handleEvent(Event event) {
                        int style = SWT.ICON_QUESTION | SWT.YES | SWT.NO;

                        MessageBox messageBox = new MessageBox(new Shell(reqTree.getDisplay()));
                        messageBox.setMessage("Message");
                        int rc = messageBox.open();
                        item.setText(rc + "");
                        bn.dispose();
                    }
                });
                editor.setColumn(0);
                editor.setEditor(bn, item);
            }
        });


分享到:
评论

相关推荐

    SWT JFACE 编程笔记

    SWT JFACE 编程笔记 , 比较适合刚 解除 java swt jface 的开发人员

    配套源码_可视化JAVA SWT JFACE GUI程序设计教程

    JFace 建立在 SWT 之上,提供了一层抽象,简化了开发过程,使得代码更简洁、可读性更强。JFace 引入了一些高级控件和数据模型,如视图、对话框、表编辑器等,并且实现了事件处理和数据绑定机制。通过使用 JFace,...

    Eclipse SWT JFace核心应用_pdf_含标签_目录

    《Eclipse SWT/Jface核心应用》全面介绍了SWT、JFace和RCP的相关知识。全书共分5篇,第1篇介绍了SWT产生的背景以及SWT的一些基本概念和基础知识。第2篇介绍了SWT基本控件的使用,以及事件处理、布局等SWT基本知识的...

    Eclipse SWT JFace核心应用

    Eclipse SWT JFace核心应用 PDF

    SWT/JFace专题 --- SWT/JFace概述

    JFace 建立在SWT之上,提供了一层抽象,简化了GUI开发的复杂性。JFace的目标是通过提供数据绑定、视图模型、对话框和服务等高级构造,来提高开发者的生产力。例如,它使用模型-视图-控制器(MVC)架构,将数据管理与...

    swt_jface_celleditor

    JFace则是在SWT之上构建的一层抽象,它简化了GUI开发,提供了数据绑定、视图和控制器模式等高级特性。 TableViewer是JFace提供的一种用于展示表格数据的组件,它可以显示多种类型的数据,并支持各种操作,如排序、...

    Eclipse SWT/JFace 核心应用的全部源代码

    在这个名为“Eclipse SWT/JFace 核心应用的全部源代码”的压缩包中,包含了这两者的核心源代码,对于学习、理解和调试Eclipse相关项目具有极高的价值。 首先,SWT是Eclipse提供的一个开源的GUI库,它与Java标准的...

    SWT.rar_java swt_jface api_swt api_swt jface_swt jface 3.4 api

    JFace则是建立在SWT之上的高级抽象层,它简化了GUI开发的复杂性,提供了更简洁的API。 在"SWT-JFace-3.4-API"这个压缩包中,包含了SWT和JFace的3.4版本的API文档。这些文档对于开发者来说是非常重要的参考资料,...

    Swt JFace in Action 中文版

    《Swt JFace in Action》是一本专注于Java图形用户界面(GUI)开发的专业书籍,中文版的出现使得更多的中国开发者能够深入理解并掌握Swt和JFace这两个强大的库。本书详细介绍了如何使用Eclipse的这两项核心技术来...

    Eclipse SWT/JFACE 核心应用 配套源代码

    2. **JFace**:JFace是在SWT基础上构建的一个高级UI框架,它简化了SWT的使用,提供了数据绑定、对话框、视图管理等功能。JFace的目的是减少代码量,提高代码的可读性和可维护性。源代码中可能包含JFace的使用示例,...

    Eclipse SWT JFace核心应用 PDF.part2

    Eclipse SWT JFace核心应用 Eclipse SWT JFace核心应用

    SWT JFACE in Action(中文)

    JFace则是建立在SWT之上的更高层次的抽象,旨在简化GUI开发的复杂性。JFace提供了一组高级组件、视图、对话框和事件处理机制,使得开发者可以专注于业务逻辑,而无需过多关注底层的SWT细节。例如,JFace的数据绑定...

    SWT JFace核心应用原代码

    总之,"SWT JFace核心应用原代码"是一个宝贵的资源,不仅能让初学者深入理解SWT和JFace的使用,还能帮助他们掌握实际项目开发中的各种技巧和最佳实践。通过学习和分析这些代码,开发者可以提升自己的GUI编程能力,为...

    swt_jface.jar

    使用swt jface图形界面技术需要用到的jar文件。Swt,jface是一款非常优秀的javaUI库

    SWT JFace in action API

    "SWT+JFace+in+Action.pdf"和"SWT-JFace-in-Action_中文版.pdf"很可能是两本关于SWT和JFace的实战教程,其中可能涵盖了从基础到高级的各种主题,包括案例研究和实践指导。 总的来说,"SWT JFace in action API"的...

    SWT Jface知识点

    SWT Jface知识点,Eclipse SWT/JFace核心应用

    Eclipse SWT JFace 核心应用

    声明:该文件不能以任何形式用于商业用途,仅供个人学习使用,如有侵权请联系我删除。如有不便,敬请原谅。

    全面介绍SWT-JFace

    JFace是建立在SWT之上的更高层次的抽象框架,简化了GUI开发的复杂性,使得代码更简洁,结构更清晰。 SWT的设计目标是提供与本机系统更紧密的集成,因此它能够创建出与平台原生应用类似的外观和行为。这与Java Swing...

    SWT_JFace.rar_ImageAnalyzer_SWT-jface_swt jface

    JFace,则是建立在 SWT 之上的更高层次的抽象,它简化了 SWT 的使用,减少了代码的复杂性。JFace 提供了数据绑定、视图、对话框等高级服务,使得开发者能够更专注于业务逻辑,而不是底层的 GUI 细节。JFace 还引入了...

Global site tag (gtag.js) - Google Analytics