Как добавить MouseListener в модель таблицы

У меня есть JTable. Когда пользователь щелкает ячейку, создается другая таблица JTable, в которой отображаются данные для всей строки этой ячейки в формате столбца (т. Е. Строка преобразуется в столбец).

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

Проблема заключается в том, что метод getSelection таблицы принимает только метод addListSelectionListener, а не MouseListener. Как я могу делать то, что я хочу?

Вот код:

public void valueChanged(ListSelectionEvent e) {
                if (!e.getValueIsAdjusting()) {
                    int selectedRow = table.getSelectedRow();
                    DefaultTableModel newModel = new DefaultTableModel();
                    String rowName = "Row: " + selectedRow;
                    newModel.setColumnIdentifiers(new Object[]{rowName});
                    for (int i = 0; i < table.getModel().getColumnCount(); i++) {
                        newModel.addRow(new Object[]{table.getModel().getValueAt(selectedRow, i)});
                    }
                    JTable newTable = new JTable(newModel) {
                        /**
                         * 
                         */
                        private static final long serialVersionUID = 1L;

                        @Override
                        public Dimension getPreferredScrollableViewportSize() {
                            return new Dimension(140, 240);
                        }
                    };

                    // Apply any custom renderers and editors
                    JOptionPane.showMessageDialog(frame, new JScrollPane(newTable),
                        rowName, JOptionPane.PLAIN_MESSAGE);
                }
            }
        });

1 ответ

Это происходит, когда пользователь нажимает, но это немного раздражает, чтобы происходить каждый раз, поэтому я хочу сделать это только по двойному щелчку

Вы используете MouseListener, а не ListSelectionListener. Вы бы проверили событие мыши на количество кликов 2.

Прочитайте раздел из учебника Swing о том, как написать MouseLister для получения дополнительной информации и рабочих примеров.

Кроме того, двойной щелчок запустит редактор по умолчанию, поэтому вы хотите убедиться, что ячейка недоступна для редактирования. Так что вам может понадобиться переопределить isCellEditable(...) метод таблицы.

Другие вопросы по тегам