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
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