tutorials.de Buch-Aktion 02/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
1200
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    drone68 drone68 ist offline Grünschnabel
    Registriert seit
    Jul 2008
    Beiträge
    1
    Hallo SWT-Kenner,

    ich habe mal eine Anfängerfrage. Ich möchte eine Zeile aus einer SWT-Table löschen.
    Allerdings verwende ich einen TableEditor, damit die Zeilen bearbeitet werden können.

    Die Tabellenzeile kann ich auch entfernen (sieht man an den Checkboxen), jedoch bleiben die Textboxen und die Combo in der Anzeige. Wie macht man es richtig? Zur Vereinfachung entferne ich im Beispiel jeweils die letzte Zeile.

    Wenn ich nur eine Zeile mit einem TextEditor und einem Textfeld anlege, kann ich genau diese Elemente mit dispose entfernen.

    Habt Ihr irgendeine Idee? Vielen Dank schonmal.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    
    package table.editor;
     
    import org.eclipse.swt.SWT;
    import org.eclipse.swt.custom.CCombo;
    import org.eclipse.swt.custom.TableEditor;
    import org.eclipse.swt.events.SelectionEvent;
    import org.eclipse.swt.events.SelectionListener;
    import org.eclipse.swt.layout.GridData;
    import org.eclipse.swt.layout.GridLayout;
    import org.eclipse.swt.widgets.Button;
    import org.eclipse.swt.widgets.Control;
    import org.eclipse.swt.widgets.Display;
    import org.eclipse.swt.widgets.Shell;
    import org.eclipse.swt.widgets.Table;
    import org.eclipse.swt.widgets.TableColumn;
    import org.eclipse.swt.widgets.TableItem;
    import org.eclipse.swt.widgets.Text;
     
     
    public class RemoveTableItemsAndEditors {
        
        private Table table = null;
        private TableEditor editor = null;
        
        private class DoDeleteRow implements SelectionListener {
     
            public void widgetDefaultSelected(SelectionEvent arg0) {
                // TODO Auto-generated method stub
     
            }
     
            public void widgetSelected(SelectionEvent arg0) {
                int itemCount = table.getItemCount();
                System.out.println(itemCount);
                if (itemCount>0) {
                    table.remove(itemCount-1);
                }
                //table.remove(0);
                table.redraw();
            }
     
        }
     
        public static void main(String[] args) {
            RemoveTableItemsAndEditors start = new RemoveTableItemsAndEditors();
            start.init();
        }
        
        public void init(){
            Display display = new Display();
            Shell shell = new Shell(display);
            
            GridLayout layout = new GridLayout(2, false);
            shell.setLayout(layout);
            
            table = new Table(shell, SWT.BORDER | SWT.MULTI | SWT.CHECK);
            table.setSize(400, 600);
            
            for (int i = 0; i < 2; i++) {
                TableColumn column = new TableColumn(table, SWT.NONE);
                column.setWidth(100);
              }
            
            for (int i = 0; i < 10; i++) {
              TableItem item = new TableItem(table, SWT.NONE);
              item.setText("Item"+i);
                                  
              editor = new TableEditor (table);
              
              Text text = new Text(table, SWT.NONE);
              item.setData("item"+i, text);
                 
              text.setText("Mein Text");
              editor.grabHorizontal = true;
              editor.setEditor(text, item, 0);
              
              editor = new TableEditor (table);
              CCombo combo = new CCombo (table, SWT.READ_ONLY);
              combo.add("Text 1");
              combo.add("Text 2");
              combo.add("Text 3");
              editor.grabHorizontal = true;
              editor.setEditor(combo, item, 1);
              
              
            }
             
            Button b = new Button(shell, SWT.PUSH);
            b.setText("Drück mich");
            b.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, true, true, 1, 1));
            
            b.addSelectionListener(new DoDeleteRow());
            
            shell.pack();
            shell.open();
            while (!shell.isDisposed()) {
              if (!display.readAndDispatch())
                display.sleep();
            }
            display.dispose();
        }
    }
     

  2. #2
    Arx Tutorials.de Gastzugang
    Sow wie du beim Click den Editor erzeugst, so musst du ihn auch wieder disposen (das Textfeld setVisible(false) etc.) und den Editor auf null setzen.
    Z.b. wenn der Nutzer "Escape" drückt, oder wenn eine andere Zeile angeklickt wird (wenn der Editor != null ist, dann erst löschen, bevor der neue angelegt wird)
     

  3. #3
    pfgrid pfgrid ist offline Rookie
    Registriert seit
    Jul 2010
    Beiträge
    9
    Hi drone68,

    Du kannst unser PFGrid für SWT verwenden, da musst Du Dich um solche Sachen wie Editor freigeben und erzeugen nicht kümmern, kannst es Dir ja mal ansehen:
    http://eclipse.pfgrid.com/CellEditors_Eclipse.aspx

    Viele Grüße
    Matthias
    http://www.pfgrid.com
     

Ähnliche Themen

  1. SWT: Textfeld mit Hilfe von Combo Box füllen
    Von Sonne86 im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 6
    Letzter Beitrag: 10.06.10, 21:30
  2. Row von Table löschen
    Von Headymaster im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 23.06.08, 15:19
  3. Table + CellEditor mit Combo und Textfield
    Von ablake27 im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 5
    Letzter Beitrag: 29.01.08, 11:04
  4. TextFeld und Table
    Von blaiso im Forum Java
    Antworten: 2
    Letzter Beitrag: 13.02.07, 13:43
  5. SWT/JFace Table Combo- und Checkbox einfügen
    Von Luxor im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 14.07.05, 10:34