Re(3): Jtable-Prob...
Geizhals » Forum » Programmierung » Jtable-Prob... (9 Beiträge, 353 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
Jtable-Prob...
11.05.2011, 18:55:12
Hi !

Stehe gerade an - und sehe mal wieder den Wald vor lauter Bäumen nicht.
2 Problemchen hätte ich aktuell:

1.) Verschieben von Spalten:
Ich habe eine JTable mit einem eigenen TableModel.
Man kann dabei ja Out-of-the-Box bequem die Spalten verschieben.

Beispielsweise könnte ich Spalte 0 zu Spalte 4 verschieben.
Das löst ja nun am ColumnModel der JTable viele Events aus a la
columnMoved(von 0 nach 1)
columnMoved(von 1 nach 2)
columnMoved(von 2 nach 3)
....


Wenn ein Benutzer eine Spalte verschoben hat (also bei Loslassen des Mousebuttons), hätte ich nun gerne eine Aktion ausgelöst

Ich könnte das natürlich implementieren, indem ich die columnMoved-Aufrufe in zB einem Vector speichere, einen Mouselistener registriere, und bei mouseReleased() mal die Änderungen durchführe. Gibt es das auch simpler ? Am liebsten hätte ich ein Event, das mir sagt "Spalte 3 wurde an Position 5 bewegt"... Gibt es das ?

2.) TableModel-Prob(?):
Wenn man einen Doppelclick auf die Titelzeile der Tabelle macht, möchte ich drauf reagieren.

Diese Reaktion soll u.a. eine Änderung der Anzeige in der Titelzeile bewirken.
Das bekomme ich wie folgt hin:
- ich schicke ein new TableModelEvent(this, TableModelEvent.HEADER_ROW)) an die im TableModel registrierten Listener
- und der getColumnName(int spalte) liefert den neuen Namen.


Mein Problem dabei ist, dass durch ein
new TableModelEvent(this, TableModelEvent.HEADER_ROW))
scheinbar die vorherige Spaltenreihenfolge eliminiert wird.

Angenommen, die Spaltenreihenfolge war: 0 1 2 3 4
Der Benutzer tauscht Spalten - sie sind nun: 2 3 1 0 4
Der Benutzer macht einen Doppelklick auf die erste Spalte - durch das TableModelEvent sind die Spalten nachher wieder 0 1 2 3 4

Was mache ich falsch ?

Antworten PM Alle Chronologisch
 
Melden nicht möglich
.  Re: Jtable-Prob...  (kombipaket am 12.05.2011, 09:10:20)
.  Re: Jtable-Prob...  (thE am 12.05.2011, 11:49:54)
..  Re(2): Jtable-Prob...  (kombipaket am 12.05.2011, 11:58:27)
...
Re(3): Jtable-Prob...
thE
12.05.2011, 13:06:51
Ich hab hier mal eine JTable + Objekt-Array gemacht: http://www.java-forum.org/bilder-gui-damit-zusammenhaengt/7174-jtable-klasse-struktur-erstellen-sortieren.html
(meine Fresse ist das alt und ich hab keinen Plan mehr von dem Zeugs :P)

Das kann sogar via CTRL + klick mehrere Spalten zusammen sortieren...

Ich swappe da beim Sortieren die Indizies und setze diese nachher wieder und somit tauschen im Object-Array die Reihen die Plätze..

Probelm ist ja eher, du willst Spalten tauschen..

Dh, du müsstest irgendwie ein Double-Int-Array haben, welches eigentlich die Indizies speichert und dieses kann sich ändern.

Dann müsstest in der getValueAt ein select * machen und auf das double-int-array zugreifen und sehen, welche Spalte du vom select zurückbringen sollst (rs.getObject(int index)).

Ädit: Ums bißchen zu verdeutlichen!

int index[][] = new int[select count(*) from table][spalten-anzahl-von-table];

Dort ist halt defaultmäßig sowas drinnen:

for(int x = 0; x != index.length; x++)
{
  for(int y = 0; y != index[x].length; y++)
  {
     index[x][y] = y + 1; //weil bei select und rs.getObject das ganze ja bei 1 anfangt und nicht 0
  }
}

Dann haste halt die getValueAt

public Object getValueAt(int row, int col)
{
   if(row < index.length && col < index[row].length)
   {
     ResultSet rs = "select * from table";
     return rs.getObject(index[row][col]);
   }
   return null;
}


Und dieses index Dingens wird dann eigentlich sortiert..

Dh, Reihen swappen wenn man von oben nach unten sortiert und in der Spalte den Index abändern, sodass die Spalten verschiebbar sind..

So würde ich es in der Theorie umsetzen ;)
...
:P
Apple User sind wie Zeugen Jehovas. Es ist sinnlos mit ihnen zu reden..
Soviel zudem HTML5 ist besser als Flash: http://www.themaninblue.com/writing/perspective/2010/03/22
12.05.2011, 13:40 Uhr - Editiert von thE, alte Version: hier
Antworten PM Alle Chronologisch Zum Vorgänger
 
Melden nicht möglich
....  Re(4): Jtable-Prob...  (kombipaket am 12.05.2011, 20:21:57)
.....  Re(5): Jtable-Prob...  (thE am 12.05.2011, 23:18:38)
......  Re(6): Jtable-Prob...  (kombipaket am 12.05.2011, 23:26:05)
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung