SWT: TableEditor und TableItem

  • Themenstarter Themenstarter Tobias Köhler
  • Beginndatum Beginndatum
T

Tobias Köhler

Hallo.
Ich versuche, herauszufinden, in welcher Zelle Text eingegeben wird.
Die Tabelle hat nur eine Zeile und soll später als Suchfunktion genutzt werden.
Problem: Der Text scheint per table.getItem(0).getText(i) nicht abrufbar zu sein, also meine Vermutung(leuchtet ja auch irgendwo ein;)): Das TableItem ist eine Ebene "tiefer", dadrauf liegen die Textfelder, in die geschrieben wird. Diesen Text möchte ich aber haben. Wie mach ich das jetzt?
Java:
search_table = new Table(shell, SWT.BORDER);
search_table.setBounds(10, 10, 420, 40);
search_table.setLinesVisible(true); //zeigt Linien an
search_table.setHeaderVisible(true); //zeigt die Kopfzeile an
                
column = new TableColumn[table.getColumnCount()];
for(int i=0; i<table.getColumnCount(); i++)
    {
         column[i] = new TableColumn(search_table, SWT.DRAG);
         column[i].setWidth(50);
         column[i].setText(table.getColumn(i).getText());
    }
                
search = new TableItem(search_table, SWT.NONE);        
                
for(int i=0; i<search_table.getColumnCount(); i++)
    {
          final Text t_text = new Text(search_table, SWT.NONE);
          t_text.addKeyListener(new KeyListener()
          {
               public void keyPressed(KeyEvent arg0) 
               {                        
               }

               public void keyReleased(KeyEvent arg0) 
               {                                
                    if(arg0.keyCode!=8)
                       search_string = search_string + arg0.character;
                    else
                       search_string = t_text.getText();
                            
                    int zelle = -1;
                    // feststellen in welche Zelle geschrieben wurde:
                    for(int i=0; i<search_table.getColumnCount(); i++)
                    {
                         search_table.getItem(0).getText(i);
                    }
                    System.out.println(search.getText() + " " + zelle);       
              }
       });                
editor = new TableEditor(search_table);
editor.grabHorizontal = editor.grabVertical = true;
editor.setEditor(t_text, search, i);
 
So, nun habe ich folgendes Problem:
Ich wollte gerne wissen, in welcher Spalte Text eingegeben wird. Das mache ich mit
Java:
if(search.getText(i).length()!=0)
     zelle = i;
Das Problem hierbei ist allerdings, dass der LeerText in t_text(der ja auf die search) nicht die Länge 0 hat...
Java:
System.out.println(search.getText(0).length());
liefert nach Initialisieren 1 aber erst sobald ich die backspace Taste drücke wird die Länge zu 0.
den Text auf "" zu setzen bringt leider nix
 
Zurück