import java.awt.event.*;
import javax.swing.*;
public class TabellenKeyEvents extends JFrame {
public TabellenKeyEvents() {
setTitle("Drücke die Pfeil-Tasten um die Events zu sehen");
setDefaultCloseOperation( EXIT_ON_CLOSE );
setSize(400,300);
setLocationRelativeTo( null );
JTable tabelle = new JTable(15, 5);
getContentPane().add( new JScrollPane( tabelle ) );
setKeyAktion(KeyEvent.VK_DOWN, tabelle);
setKeyAktion(KeyEvent.VK_UP, tabelle);
setKeyAktion(KeyEvent.VK_RIGHT, tabelle);
setKeyAktion(KeyEvent.VK_LEFT, tabelle);
}
private void setKeyAktion(final int tasteCode, final JTable tabelle){
InputMap im = tabelle.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
KeyStroke taste = KeyStroke.getKeyStroke(tasteCode, 0);
Object tasteFunktion = im.get(taste);
final Action alteTasteAktion = tabelle.getActionMap().get(tasteFunktion);
Action tasteAktion = new AbstractAction() {
public void actionPerformed(ActionEvent e) {
alteTasteAktion.actionPerformed( e );
JTable tabelle = (JTable)e.getSource();
int zeile = tabelle.getSelectedRow();
int spalte = tabelle.getSelectedColumn();
for (int i = 0; i < tabelle.getRowCount(); i++) {
for (int j = 0; j < tabelle.getColumnCount(); j++) tabelle.setValueAt("",i,j);
}
if(tasteCode==KeyEvent.VK_LEFT) tabelle.setValueAt("Links",zeile,spalte);
if(tasteCode==KeyEvent.VK_RIGHT) tabelle.setValueAt("Rechts",zeile,spalte);
if(tasteCode==KeyEvent.VK_UP) tabelle.setValueAt("Hoch",zeile,spalte);
if(tasteCode==KeyEvent.VK_DOWN) tabelle.setValueAt("Runter",zeile,spalte);
}
};
tabelle.getActionMap().put(tasteFunktion, tasteAktion);
}
public static void main(String[] args) { new TabellenKeyEvents().setVisible(true);}
}