Hallo,
ich habe ein JTable implementiert. In dieser Tabelle kann eine Zeile markiert werden. Wird nun strg+l gedrückt, wird oberhalb der Markierung eine neue Zeile eingefügt.
Jetzt wäre es natürlich praktisch, dass dann sofort wieder diese Zeile markiert ist. Das habe ich mit setSelectionIntervall(i, i) gemacht.
Drücke ich allerdings jetzt noch mal die Tastenkombination strg+l wird keine neue Zeile mehr eingefügt. Das geschieht erst dann, wenn ich extra noch mal in diese Zeile klicke.
Wieso muss ich noch mal extra klicken, wenn doch die Zeile bereits markiert ist?!
Hätte schon ein bisschen rumgespielt und z.B. folgendes abgeändert:
hier wird dann auch die darunterliegende Zeile markiert und der print-Befehl gibt auch diese Zeile aus. Also das würde eigentlich passen...
Jemand einen Tipp? :bahnhof:
Julia
ich habe ein JTable implementiert. In dieser Tabelle kann eine Zeile markiert werden. Wird nun strg+l gedrückt, wird oberhalb der Markierung eine neue Zeile eingefügt.
Jetzt wäre es natürlich praktisch, dass dann sofort wieder diese Zeile markiert ist. Das habe ich mit setSelectionIntervall(i, i) gemacht.
Drücke ich allerdings jetzt noch mal die Tastenkombination strg+l wird keine neue Zeile mehr eingefügt. Das geschieht erst dann, wenn ich extra noch mal in diese Zeile klicke.
Wieso muss ich noch mal extra klicken, wenn doch die Zeile bereits markiert ist?!
Code:
public void keyPressed(KeyEvent e) {
int row = gui.table.getSelectedRow();
if ((e.isControlDown()) && (e.getKeyCode() == KeyEvent.VK_L)) {
for (int i = 99; i > row; i--) {
for (int j = 0; j < 4; j++) {
gui.al.dataMiddle[i][j] = gui.al.dataMiddle[i-1][j];
}
}
gui.al.dataMiddle[row][0] = null;
gui.al.dataMiddle[row][1] = null;
gui.al.dataMiddle[row][2] = null;
gui.al.dataMiddle[row][3] = null;
gui.table = new JTable(gui.al.dataMiddle, gui.columnNames);
gui.table.setColumnModel(gui.colModel);
gui.table.addKeyListener(new AddLine(gui));
gui.table.addKeyListener(new DeleteLine(gui));
gui.table.getSelectionModel().setSelectionInterval(row, row);
gui.sp.getViewport().add(gui.table);
}
.........
Hätte schon ein bisschen rumgespielt und z.B. folgendes abgeändert:
Code:
gui.table.getSelectionModel().setSelectionInterval(row+1, row+1);
System.out.println(gui.table.getSelectedRow());
hier wird dann auch die darunterliegende Zeile markiert und der print-Befehl gibt auch diese Zeile aus. Also das würde eigentlich passen...
Jemand einen Tipp? :bahnhof:
Julia