TableModelEvent

Status
Nicht offen für weitere Antworten.

SebiB90

Top Contributor
ich hab ein jtable mit einem tablemodel. ich will per JMenu die spalten einstellen, welche gezeigt werden und welche nicht. da müsste jetzt alles richtig sein aber ich muss alle listener bnachrichtigen das eine neue spalte hinzugekommen/entfernt worden ist. nur ich raff die tablemodelevents nich.
könntet ihr mir sagen wie die events lauten müssen?
 
R

Roar

Gast
die listener werden doch automatisch benachrichtigt wenn du was an der table änderst...
 
R

Roar

Gast
öööh: http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/table/TableColumnModel.html#removeColumn(javax.swing.table.TableColumn)
da steht doch: "his method posts a columnRemoved event to its listeners."
oder was wilslt du machen??
 

SebiB90

Top Contributor
was brauch ich jetzt noch ein tablecolumnmodel???
das geht ganrantiert auch ohne ich muss nur wissen wie das event lautet
 
R

Roar

Gast
hä? jede JTable benutzt ein TableModel und ein TableCOlumnModel. ganz gleich ob du selbst eines implementiert hast oder nicht. und mit entsprechenden getter m,ethoden kommst du an dein model.
 

SebiB90

Top Contributor
und wie ruf ich die methode auf????
wie komm ich an das columnmodel????

edit:weiß schon wie, aber wenn ich das mache muss ich wieder alles umschreiben(glaub ich)
wie lautet das event will ich doch nur wissen
Code:
new TableModelEvent(???);
welche parameter muss ich angeben???
 

foobar

Top Contributor
Du mußt die Daten über das TableModel manipulieren, dann werden alle Listener automatisch über die Veränderungen informiert.
 

foobar

Top Contributor
http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/table/DefaultTableModel.html#addRow(java.lang.Object[])

RTFM
 

foobar

Top Contributor
kann man irgendwo den code des DefaultTableModel´s angucken???
In Eclipse mußt du die Shift-Taste gedrückt halten und auf den Klassennamen klicken.
Ansonsten mußt du dir den Source aus $JAVA_HOME/src.zip holen.

BTW Wenn es dir darum geht rauszufinden wie das Defaultablemodel die Events verarbeitet, guck dir mal was JTable Tutorial an oder lies Java ist auch eine Insel.
 
B

Beni

Gast
Im Prinzip funktionieren Spalten und Zeilen gleich. Praktisch der einzige Unterschied ist, dass beim Konstruktor des Eventes etwas andere Werte angegeben werden müssen.

Das hier ist für eine Zeile:
Code:
public void addVehicle( Vehicel vehicel ){
      // Das wird der Index des Vehikels werden
      int index = vehicels.size();
      vehicels.add( vehicel );
      
      // Jetzt werden alle Listeners benachrichtigt
      
      // Zuerst ein Event, "neue Row an der Stelle index" herstellen
      TableModelEvent e = new TableModelEvent( this, index, index,
            TableModelEvent.ALL_COLUMNS, TableModelEvent.INSERT );
      
      // Nun das Event verschicken
      for( int i = 0, n = listeners.size(); i<n; i++ ){
         ((TableModelListener)listeners.get( i )).tableChanged( e );
      }
   }


Im DefaultTableModel wird die Änderung der Anzahl Columns mit dem Feuern eines new TableModelEvent(this, TableModelEvent.HEADER_ROW) abgeschlossen.
 

SebiB90

Top Contributor
ich brauch nur HEADER_ROW anzugeben?
warum hat mir das nicht jemand schon früher gesagt
ich werds mal ausprobieren
Danke
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben