PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : JTabel Cell selection a la Excel


DocEW
2008-04-14, 11:50:15
Hallo zusammen,

ich versuche jetzt schon seit 2 Stunden, meinem JTable ein Verhalten beizubringen, wie man es von Excel gewohnt ist:

Wenn ich in eine Zelle klicke oder mittels TAB zur nächsten Zelle springe und drauflos tippe, werden die dort stehenden Daten überschrieben.

Von MouseListenern über Keyboardlistener bis zu ListSelectionListener bin ich jetzt alles durch - und nix hat vollständig funktioniert. :( Kennt sich da von euch vielleicht jemand aus?

Mein aktueller Stand:
...
JTable myTable = new JTable(tableDate, columnNames);
DefaultCellEditor editor = (DefaultCellEditor)myTable.getDefaultEditor(String.class);
editor.setClickCountToStart(0);
myTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
if (e.getValueIsAdjusting()) {
return;
}
System.out.println("yaay: " + myTable.getValueAt(myTable.getSelectedRow(), myTable.getSelectedColumn()) );
}
});

myTable.getColumnModel().getSelectionModel().addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
if (e.getValueIsAdjusting()) {
return;
}
System.out.println("yooy: " + myTable.getValueAt(myTable.getSelectedRow(), myTable.getSelectedColumn()) );
}
});
Das fängt zumindest sowohl den Maus- als auch den Keyboard-Fall ab. Allerdings weiß ich nicht, wie ich jetzt den Text selektieren soll, so dass er überschrieben wird.
Oder muss ich das alles ganz ander angehen? Eigenen Editor schreiben...? Hilfe! :(

Besten Dank schonmal,

DocEW

DocEW
2008-04-14, 13:35:48
OK, so scheint's zu gehen:

myTable = new JTable(tableData, columnNames) {
public Component prepareEditor(TableCellEditor editor, int row, int column) {
Component c = super.prepareEditor(editor, row, column);
if (c instanceof JTextComponent) {
((JTextField) c).selectAll();
}
return c;
}
};

AtTheDriveIn
2008-04-14, 13:47:26
http://java.sun.com/docs/books/tutorial/uiswing/components/table.html

die Tutorials von Sun sind wirklich gut, hat mir damals mit meinem JTable Problemen auch immer geholfen.

DocEW
2008-04-15, 09:40:09
Ja, danke, die kenne ich. :) Da habe ich zwar einiges gefunden, aber wie gesagt hat nichts davon zum gewünschten Ergebnis geführt. Die Lösung, die ich jetzt habe (s.o.), findet sich auf der Seite auch nicht.