2016-08-04 39 views
0

Ich versuche, eine Java-SWT-Tabelle mit Spalten zu erstellen. Was ich möchte, ist die linke Spalte, die ein Kontrollkästchen enthält. Das ist der Code, den ich bisher habe.Hinzufügen eines Kontrollkästchens in einer swt-Tabelle mit Spalten

panelSelector = new Composite(composite, SWT.H_SCROLL); 
    //panelSelector.setBackgroundImage(SWTResourceManager.getImage(UniverseAnalyzerItem.class, "/img/LandscapeTools/UniverseAnalyzer.png")); 
    panelSelector.setLayout(null); 

    ScrolledComposite scrolledComposite = new ScrolledComposite(panelSelector, SWT.BORDER | SWT.V_SCROLL|SWT.H_SCROLL); 
    scrolledComposite.setBounds(10, 30, 800, 500); 
    scrolledComposite.setExpandHorizontal(true); 
    scrolledComposite.setExpandVertical(true); 

    //tableViewer = new TableViewer(scrolledComposite, SWT.BORDER | SWT.FULL_SELECTION | SWT.V_SCROLL | SWT.CHECK); 
    //table = tableViewer.getTable(); 

    table = new Table(scrolledComposite,SWT.BORDER | SWT.CHECK); 
    table.setTouchEnabled(true); 

    table.setLinesVisible(true); 
    table.setHeaderVisible(true); 

    tableViewer = new TableViewer(table); 

    TableColumn uCheck = new TableColumn(table,SWT.CHECK); 
    uCheck.setWidth(50); 

    TableColumn uName = new TableColumn(table,SWT.CENTER); 
    uName.setText("Name"); 
    uName.setWidth(150); 


    TableColumn uID = new TableColumn(table,SWT.CENTER); 
    uID.setText("ID"); 
    uID.setWidth(50); 

    TableColumn uType = new TableColumn(table,SWT.CENTER); 
    uType.setText("Type"); 
    uType.setWidth(50); 


    TableColumn uPath = new TableColumn(table,SWT.CENTER); 
    uPath.setText("Path"); 
    uPath.setWidth(200); 

    scrolledComposite.setContent(table); 
    scrolledComposite.setMinSize(table.computeSize(SWT.DEFAULT,SWT.DEFAULT)); 

Das Problem ist, wenn ich die Anwendung ausführen, sind die Kontrollkästchen nicht sichtbar. Wer weiß, was ich falsch mache?

Antwort

0

Ihr Code legt keine Eingabe für die Tabelle fest. Sie werden nichts in der Tabelle sehen, bis Sie den Viewer-Inhaltsanbieter, den Label-Provider und den Aufruf setInput festgelegt haben.

Wie ein Test

tableViewer.setContentProvider(ArrayContentProvider.getInstance()); 

tableViewer.setInput(new String [] {"line1", "line2"}); 

am Ende des Codes arbeitet für das Hinzufügen von mir.

Hinweis: SWT.CHECK ist kein gültiger Stil für TableColumn. Auf diese Weise greifen Sie nicht auf die Kontrollkästchen in der Tabelle zu. Sie sollten CheckboxTableViewer anstelle von TableViewer verwenden, dies gibt Ihnen zusätzliche Methoden, um auf die Kontrollkästchen zuzugreifen.