У меня есть два компонента JTable
(основная таблица (tableA
) и подробная таблица (tableB
)). Мне нужно использовать клавишу со стрелкой вверх / вниз для перемещения в основной таблице и получения таблицы данных в деталях.
Код, который я использую, выглядит следующим образом:
private void jTable1KeyPressed(java.awt.event.KeyEvent evt) {
if (evt.getKeyCode() == KeyEvent.VK_UP ||evt.getKeyCode() == KeyEvent.VK_DOWN) {
MoveMasterdetail();
}
}
private static final String UP = "UP";
private static final String DOWN = "DOWN";
public void MoveMasterdetail() {
int condition = jTable1.WHEN_IN_FOCUSED_WINDOW;
InputMap inputMap = jTable1.getInputMap(condition);
ActionMap actionMap = jTable1.getActionMap();
inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_UP, 0), UP);
actionMap.put(UP, new AbstractAction() {
public void actionPerformed(ActionEvent arg0) {
fetchDetail(jTable1.getValueAt(jTable1.getSelectedRow(), 0).toString().trim());
}
});
inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0), DOWN);
actionMap.put(DOWN, new AbstractAction() {
public void actionPerformed(ActionEvent arg0) {
fetchDetail(jTable1.getValueAt(jTable1.getSelectedRow(), 0).toString().trim());
}
});
}
public void fetchDetail(String autonationalno) {
try {
Connection dbConnection = null;
PreparedStatement preparedStatementSelect = null;
ResultSet rs = null;
dbConnection = getDBConnection();
if (dbConnection != null) {
int i = 0;
//inner join or outer join
String sql =
"select * from tableB";
preparedStatementSelect = dbConnection.prepareStatement(sql);
rs = preparedStatementSelect.executeQuery();
jTable2.setModel(DbUtils.resultSetToTableModel(rs));
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e);
}
}
Пожалуйста, предоставьте решение для этого.