У меня возникла проблема с тем, что мой класс расширения не может поймать KeyEvent. Вот код:JTable, завернутый внутри JScrollPane внутри JPanel, не может поймать KeyEvent
public class DatabaseJTable extends JTable implements KeyListener {
public DatabaseJTable(Object [][] data, Object [] columnNames) {
super(data, columnNames);
}
@Override
public boolean isCellEditable(int row, int column) {
return false;
}
@Override
public void keyPressed(KeyEvent kv) {
// TODO Auto-generated method stub
if (kv.getKeyChar() == KeyEvent.VK_F2) {
int selectedRow = this.getSelectedRow();
System.out.println(this.getModel().getValueAt(selectedRow, 1));
}
}
@Override
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub
}
}
А вот как используется класс:
public class DatabaseRecordScreen extends JPanel {
public DatabaseRecordScreen() {
String [] columnNames = {"Date", "Order Number", "Item Number", "Contact", "Client", "Quantity"};
Object [][] data = getAllWorkOrders();
DatabaseJTable dataTable = new DatabaseJTable(data, columnNames);
dataTable.setPreferredScrollableViewportSize(new Dimension(500, 70));
dataTable.setFillsViewportHeight(true);
JScrollPane scrollPane = new JScrollPane(dataTable);
scrollPane.setPreferredSize(Furniture.MAX_PANEL_SIZE);
this.setPreferredSize(Furniture.MAX_PANEL_SIZE);
this.add(scrollPane);
}
}
DatabaseJTable не может поймать ни KeyEvent. Я отлаживал и устанавливал точку останова в начале метода KeyPressed. Но его никогда не поймают.
Если я пропустил что-нибудь, не могли бы вы рассказать мне и сообщить мне, как решить эту проблему. Благодарю.
Я думаю, что вы могли бы найти F2 уже привязаны к функции редактирования начала – MadProgrammer
я изменил его VK_E но ничего не произошло – lightbringer