У меня есть две JTables, которые мне нужны с помощью клавиши со стрелкой вверх / вниз, чтобы переместить в мастер JTable и получить данные в деталях JTable - PullRequest
0 голосов
/ 24 июня 2018

У меня есть два компонента 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);
    }
}

Пожалуйста, предоставьте решение для этого.

1 Ответ

0 голосов
/ 24 июня 2018

Мне нужно, когда я нажимаю клавишу со стрелкой (вверх и вниз) ...

Что делать, если пользователь хочет получить информацию о последней строке таблицы?

Им НЕ нужно прокручивать всю таблицу, чтобы увидеть детали последней строки, особенно когда вы выполняете запрос к базе данных для подробных данных. Пользователь должен иметь возможность использовать мышь или клавиатуру, чтобы выбрать строку, для которой он хочет детализацию.

Именно поэтому ListSelectionListener является лучшим решением. Прочитайте раздел из учебника по Swing по Как написать ListSelectionListener , чтобы получить рабочий пример для начала работы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...