Hallo,
wie man in der Überschrift lesen kann, versuche ich es irgendwie hinzubekommen, dass man mit Tab durch die einzelnen Zeilen eines JTables wechseln kann, ohne das sich die Spalten verändern.
Allerdings funktioniert keiner meiner Versuche, und Google spuckt auch nichts brauchbares aus...
Hier mal mein aktueller Versuch:
wie man in der Überschrift lesen kann, versuche ich es irgendwie hinzubekommen, dass man mit Tab durch die einzelnen Zeilen eines JTables wechseln kann, ohne das sich die Spalten verändern.
Allerdings funktioniert keiner meiner Versuche, und Google spuckt auch nichts brauchbares aus...
Hier mal mein aktueller Versuch:
Java:
public class Obertabelle extends JTable implements KeyListener {
private static final long serialVersionUID = 1L;
private boolean naechsteZeileAuswaehlen;
private int alteReihe = 0;
public Obertabelle() {
setBorder(new LineBorder(KonfigurationsDienst.getKonfig().getColourConfig().getRand(), 5));
addKeyListener(this);
}
/* (non-Javadoc)
* @see javax.swing.JTable#prepareRenderer(javax.swing.table.TableCellRenderer, int, int)
*
* Verändert die Farben der Fokusierten Zelle/Zeile
*/
@Override
public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
Component comp = super.prepareRenderer(renderer, row, column);
int modelRow = convertRowIndexToModel(row);
int modelCol = convertColumnIndexToModel(column);
if (isRowSelected(modelRow)) {
comp.setBackground(KonfigurationsDienst.getKonfig().getColourConfig().getFokus());
if (isColumnSelected(modelCol)) {
comp.setBackground(KonfigurationsDienst.getKonfig().getColourConfig().getFokus().darker());
}
} else {
comp.setBackground(KonfigurationsDienst.getKonfig().getColourConfig().getHintergrund());
}
return comp;
}
@Override
public void changeSelection(int rowIndex, int columnIndex, boolean toggle, boolean extend) {
int uebergangsReihe = rowIndex;
if (naechsteZeileAuswaehlen) {
if (alteReihe == 0) {
super.changeSelection(rowIndex, columnIndex, toggle, extend);
alteReihe = uebergangsReihe;
}
// Entscheidung in welche Richtung man gehen soll
if (rowIndex > alteReihe) {
rowIndex++;
columnIndex--;
} else if (rowIndex < alteReihe) {
rowIndex--;
columnIndex++;
}
super.changeSelection(rowIndex, columnIndex, toggle, extend);
} else {
super.changeSelection(rowIndex, columnIndex, toggle, extend);
}
alteReihe = uebergangsReihe;
}
@Override
public void keyTyped(KeyEvent e) {
// mache Nichts
}
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_TAB) {
naechsteZeileAuswaehlen = true;
System.out.println("AN");
}
}
@Override
public void keyReleased(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_TAB) {
// naechsteZeileAuswaehlen = false;
System.out.println("AUS");
// alteReihe = 0;
}
}
}