Swt/Jface listviewer的实现

 前边将过了TableViewer和TreeViewer再来看ListViewer就简单了,操作步骤一样,但更简单。这里只给出使用的代码
一、代码,这个实现不同于前边是分开实现(都是public 的类),这里给出的是内部类的实现方式。
import  java.util.ArrayList;
import  java.util.List;

import  org.eclipse.jface.viewers.IStructuredContentProvider;
import  org.eclipse.jface.viewers.LabelProvider;
import  org.eclipse.jface.viewers.ListViewer;
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  TestListViewer  {

    
static class ListLabelProvider extends LabelProvider {
        
public String getText(Object element) {
            Country country 
= (Country)element;
            
return country.getName();
        }

        
public Image getImage(Object element) {
            
return null;
        }

    }

    
static class ContentProvider implements IStructuredContentProvider {
        
public Object[] getElements(Object inputElement) {
            
if(inputElement instanceof List){
                List list 
= (List)inputElement;
                
return list.toArray();
            }

            
return new Object[0];
        }

        
public void dispose() {
        }

        
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
        }

    }

    
static class Country {
        
private String name;

        
public Country(){
        }

        
public Country(String name){
            
this.name = name;
        }

        
public String getName() {
            
return name;
        }


        
public void setName(String name) {
            
this.name = name;
        }

        
public static List getCountryList(){
            List list 
= new ArrayList();
            list.add(
new Country("中国"));
            list.add(
new Country("美国"));
            list.add(
new Country("日本"));
            
return list;
        }

        
    }

    
private static org.eclipse.swt.widgets.List list;
    
/**
     * Launch the application
     * 
@param args
     
*/

    
public static void main(String[] args) {
        
final Display display = Display.getDefault();
        
final Shell shell = new Shell();
        shell.setSize(
500375);
        shell.setText(
"SWT Application");
        
//
        
        shell.open();

        
final ListViewer listViewer = new ListViewer(shell, SWT.BORDER);
        listViewer.setLabelProvider(
new ListLabelProvider());
        listViewer.setContentProvider(
new ContentProvider());
        listViewer.setInput(
new Object());
        list 
= listViewer.getList();
        list.setBounds(
12263100100);
        
        listViewer.setContentProvider(
new ContentProvider());
        listViewer.setLabelProvider(
new ListLabelProvider());
        listViewer.setInput(Country.getCountryList());
        
//可以直接添加
        listViewer.add(new Country("英国"));
        shell.setLayout(
new FillLayout());
        shell.layout();
        
while (!shell.isDisposed()) {
            
if (!display.readAndDispatch())
                display.sleep();
        }

    }


}


二、注意代码的注释部分,可以直接添加和移除。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值