Как создать "поле ячейки для автоматической фиксации" JTable - PullRequest
0 голосов
/ 18 февраля 2019

Я пытаюсь создать jtable, который автоматически фиксирует текст во всех ячейках, когда пользователь отводит мышь от таблицы.

jTable находится внутри области прокрутки, которая находится внутри jpanel, и его можно обновить с помощью кнопки.

Проблема в том, что когда я обновляю таблицу, я больше не могу выбрать ни одну строку.

Это для приложения Windows.

public void addTable() {
DefaultTableModel dm = (DefaultTableModel) volumes.getModel();
dm.getDataVector().removeAllElements();
dm.fireTableDataChanged();     

volumes = DATABASE.findVolumes();
    volumes.addMouseListener(new MouseListener() {
        @Override
        public void mouseClicked(MouseEvent e) {
            if(volumes.getSelectedRow() != -1) {
                remove_volume.setEnabled(true);
            } else {
                remove_volume.setEnabled(false);
            }
        }

        @Override
        public void mousePressed(MouseEvent e) {
        }

        @Override
        public void mouseReleased(MouseEvent e) {
        }

        @Override
        public void mouseEntered(MouseEvent e) {
        }

        @Override
        public void mouseExited(MouseEvent e) {
            CellEditor cellEditor = volumes.getCellEditor();

            int selectedRow = volumes.getSelectedRow();

            if (cellEditor != null) {
                cellEditor.stopCellEditing();
            }

            DefaultTableModel dm = (DefaultTableModel) volumes.getModel();
            dm.fireTableDataChanged();

            if(selectedRow != -1) {
                volumes.setRowSelectionInterval(selectedRow, selectedRow);
            }
        }
    });

TABLE_PANEL.setBounds(new Rectangle(140, 85, 730, 90));
    TABLE_PANEL.add(new JScrollPane(volumes) {
        @Override
        public void setPreferredSize(Dimension preferredSize) {
            super.setPreferredSize(new Dimension(TABLE_PANEL.getWidth(), TABLE_PANEL.getHeight()));
        }
    });

    jPanel.add(TABLE_PANEL);  
}

public void refreshTable() {
addTable();   
}

Ожидается:

https://i.stack.imgur.com/smVoC.png

Результат:

https://i.stack.imgur.com/ukLKT.png

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