Как выбрать с помощью мыши имя столбца JTable - PullRequest
0 голосов
/ 25 января 2019

Я создал исполнителя запросов и использовал JTable на основе resultSet для отображения результатов. Моя реализация Jtable выглядит так:

        ResultSetMetaData metaData = rs.getMetaData();
        columnCount = metaData.getColumnCount();
        Vector<String> columnNames = new Vector<String>();

        for (int i = 1; i <= columnCount; i++) {
            columnNames.add(metaData.getColumnName(i));

        }

        Vector<Vector<Object>> data = new Vector<Vector<Object>>();
        while (rs.next()) {
            Vector<Object> vector = new Vector<Object>();
            for (int i = 1; i <= columnCount; i++) {
                vector.add(rs.getObject(i));
            }
            data.add(vector);

        }
        DefaultTableModel model = new DefaultTableModel(data, columnNames);
        model.fireTableStructureChanged();

        tableSwing.setModel(model);

Все работает нормально, кроме одной вещи. Я не могу выбрать или скопировать имена столбцов. Можете ли вы порекомендовать мне решение?

1 Ответ

0 голосов
/ 25 января 2019

Это не имеет никакого отношения к вашему коду, оно прекрасно работает.Ваша проблема в том, что JTable не имеет этой функциональности по умолчанию.Вам потребуется реализовать JTableHeader mouse listener, который определяет, когда пользователь нажимает на заголовок таблицы.

Пример:

JTableHeader header = table.getTableHeader();
header.setReorderingAllowed(false);
header.addMouseListener(new MouseAdapter() {  
    public void mouseClicked(MouseEvent e) {  
         int col = header.columnAtPoint(e.getPoint());  
         StringSelection selection = new StringSelection(table.getColumnName(col));
         Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
         clipboard.setContents(selection, selection);
       }  
   }); 

Обратите внимание, что это не позволит пользователю выбирать илископируйте имя столбца, поскольку Swing не позволяет этого (имя столбца не отображается так, как это разрешено).

В моем примере я заставил код автоматически скопировать имя столбца в буфер обмена.Это не идеальное решение, но оно будет работать.

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