2012-09-06 5 views
1
private ArrayList<PrinterProfile> printersList = null; 
private ArrayList<PrinterProfile> printers = null;  

... 

void Method() { 
    ... 
    printers = (ArrayList<PrinterProfile>) listOp.getPrinters(); 
    printersList.setListData(printers.toArray(new PrinterProfile[0])); 
} 

setListData 내가 당신을 위해 무엇을 검색하면 SWT List 생각 만 JList에 대한하지만 SWT와 ArrayListSWT 목록을 사용하는 방법?

답변

2

을 사용하고 있습니다. 이처럼 사용할 수 있습니다 : 당신은 이미 이전의 질문에 JFace는 뷰어를 사용

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(); 
     } 
    } 
} 

때문에, 나뿐만 아니라 여기에 ListViewer을 사용하는 것이 좋습니다 것입니다.

:

이미 TableViewer을 잘 알고 있기 때문에

, 왜 하나의 컬럼과 스타일로 setHeaderVisible(false)SWT.MULTI 하나를 사용하지? 기본적으로 같은 효과가 있습니다.

관련 문제