Java 如何使用SWT列表? private ArrayList printersList=null; 专用ArrayList打印机=null; ... void方法(){ ... printers=(ArrayList)listOp.getPrinters(); PrinterList.setListData(printers.toArray(新的PrinterProfile[0]); }

Java 如何使用SWT列表? private ArrayList printersList=null; 专用ArrayList打印机=null; ... void方法(){ ... printers=(ArrayList)listOp.getPrinters(); PrinterList.setListData(printers.toArray(新的PrinterProfile[0]); },java,arraylist,swt,Java,Arraylist,Swt,setListData仅适用于JList,但我正在使用SWT和ArrayList我想您要搜索的是SWT。您可以这样使用它: private ArrayList<PrinterProfile> printersList = null; private ArrayList<PrinterProfile> printers = null; ... void Method() { ... printers = (ArrayList<Printer

setListData
仅适用于
JList
,但我正在使用SWT和
ArrayList
我想您要搜索的是SWT。您可以这样使用它:

private ArrayList<PrinterProfile> printersList = null;
private ArrayList<PrinterProfile> printers = null;    

...

void Method() {
    ...
    printers = (ArrayList<PrinterProfile>) listOp.getPrinters();
    printersList.setListData(printers.toArray(new PrinterProfile[0]));
}
import java.util.ArrayList;
导入java.util.array;
导入org.eclipse.swt.swt;
导入org.eclipse.swt.layout.GridLayout;
导入org.eclipse.swt.widgets.Display;
导入org.eclipse.swt.widgets.Event;
导入org.eclipse.swt.widgets.List;
导入org.eclipse.swt.widgets.Listener;
导入org.eclipse.swt.widgets.Shell;
公共类小型示例{
公共静态void main(字符串[]args){
Display=Display.getDefault();
最终外壳=新外壳(显示);
shell.setLayout(新的GridLayout(1,false));
//用其内容填充ArrayList
ArrayList打印机=新建ArrayList();
打印机。添加(“爱普生”);
打印机。添加(“佳能”);
打印机。添加(“HP”);
最终列表打印列表=新列表(shell,SWT.MULTI | SWT.BORDER);
//将ArrayList填入SWT列表
用于(字符串打印:打印机)
printerList.add(打印);
//打印选择
addListener(SWT.Selection,newlistener()){
@凌驾
公共无效handleEvent(事件arg0){
如果(printerList.getSelectionCount()>0)
System.out.println(Arrays.toString(printerList.getSelection());
}
});
shell.pack();
shell.open();
而(!shell.isDisposed()){
如果(!display.readAndDispatch())
display.sleep();
}
}
}
因为您在前面的问题中已经使用了JFace查看器,所以我建议您在这里也使用一个

注意

既然您已经熟悉了
TableViewer
,为什么不使用只包含一列且
setheadervible(false)
SWT.MULTI
作为样式的TableViewer呢?基本上也会有同样的效果

import java.util.ArrayList;
import java.util.Arrays;

import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.List;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;

public class MiniExample {

    public static void main(String[] args) {
        Display display = Display.getDefault();
        final Shell shell = new Shell(display);
        shell.setLayout(new GridLayout(1, false));

        // Fill your ArrayList with its content
        ArrayList<String> printer = new ArrayList<String>();
        printer.add("Epson");
        printer.add("Canon");
        printer.add("HP");

        final List printerList = new List(shell, SWT.MULTI | SWT.BORDER);

        // Fill the ArrayList into the SWT List
        for(String print : printer)
            printerList.add(print);

        // Print selection
        printerList.addListener(SWT.Selection, new Listener() {
            @Override
            public void handleEvent(Event arg0) {
                if(printerList.getSelectionCount() > 0)
                    System.out.println(Arrays.toString(printerList.getSelection()));
            }
        });

        shell.pack();
        shell.open();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch())
                display.sleep();
        }
    }
}