首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JFace ComboViewer难度

JFace ComboViewer难度
EN

Stack Overflow用户
提问于 2017-08-01 22:22:26
回答 1查看 410关注 0票数 0

我有一些键值对,如下所示:

1-鲍勃

2-克莉丝汀

3- Michael

我将这些数据放在一个组合查看器中,但是当我选择例如2-Christine时,我希望我的组合查看器只向我显示密钥。

我为comboviewer添加了一个SelectionChangedListener,但我不知道如何在您选择某些内容后更改组合框显示的内容。

EN

回答 1

Stack Overflow用户

发布于 2017-08-16 18:27:54

您可以使用Combo的SWT可编辑模式来实现它。当您进入SWT的只读模式时,输出是不可修改的。我们有一个类似的需求,唯一的区别是在显示框的末尾追加一个文本&我们使用了简单的SWT Combo。

如果有用的话,一定要让我知道。以供参考。

代码语言:javascript
复制
package com.test;

import java.util.HashMap;
import java.util.Map;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.ComboViewer;
import org.eclipse.jface.viewers.IBaseLabelProvider;
import org.eclipse.jface.viewers.IContentProvider;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class ComboViewerExample {

public static void main(String[] args) {
    Display display = new Display();

    Shell documentViewDialog = new Shell(Display.getDefault().getActiveShell(),SWT.SHELL_TRIM);
    documentViewDialog.setLayout(new FillLayout()); 

    Map<String , String> persons = new HashMap<String, String>();
    persons.put("1","Bob");
    persons.put("2","Christine");
    persons.put("3","Michael");

    ComboViewer viewer = new ComboViewer(documentViewDialog,SWT.BORDER);

    viewer.setContentProvider(new IStructuredContentProvider() {

        @Override
        public void inputChanged(Viewer paramViewer, Object paramObject1, Object paramObject2) {
            // TODO Auto-generated method stub

        }

        @Override
        public void dispose() {
            // TODO Auto-generated method stub

        }

        @Override
        public Object[] getElements(Object paramObject) {

            return ((HashMap)paramObject).keySet().toArray();
        }
    });     

    viewer.setLabelProvider(new LabelProvider() {

        @Override
        public String getText(Object element) {
            Object obj = persons.get(element);
            String stg = element.toString() + " " + obj;
            return stg;
        }

    });



    viewer.setInput(persons);

    viewer.addSelectionChangedListener(new ISelectionChangedListener() {

        @Override
        public void selectionChanged(SelectionChangedEvent paramSelectionChangedEvent) {
            ((StructuredSelection)paramSelectionChangedEvent.getSelection()).getFirstElement();
            viewer.getCombo().setText(((StructuredSelection)paramSelectionChangedEvent.getSelection()).getFirstElement().toString());
        }
    });

    documentViewDialog.setSize(150, 150);
    documentViewDialog.open();
    while(!documentViewDialog.isDisposed())
    {
        if(!display.readAndDispatch())
        {
                display.sleep();
        }
    }
    display.dispose();
}

}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45440467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档