Подсветка пользовательского рендерера Column в JTable - PullRequest
0 голосов
/ 25 мая 2018

У меня есть JTable, который использует JTextArea в качестве пользовательского средства визуализации для одного столбца.Когда я выбираю строку, все элементы в этой строке подсвечиваются, за исключением столбца с настраиваемым визуализатором ячеек.

Как я могу также выделить этот столбец?

Я использую этот код для заполнения и задания таблицы

jTable1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
         jTable1.setModel(DbUtils.resultSetToTableModel(rs1));
         jTable1.getColumnModel().getColumn(3).setCellRenderer(new wrap());
         updateRowHeights(3, 300);

                TableColumn c1 = jTable1.getColumnModel().getColumn(0);
                TableColumn c2 = jTable1.getColumnModel().getColumn(1);
                TableColumn c3 = jTable1.getColumnModel().getColumn(2);
                TableColumn c4 = jTable1.getColumnModel().getColumn(3);
                TableColumn c5 = jTable1.getColumnModel().getColumn(4);
                TableColumn c6 = jTable1.getColumnModel().getColumn(5);
                TableColumn c7 = jTable1.getColumnModel().getColumn(6);
                TableColumn c8 = jTable1.getColumnModel().getColumn(7);

                c1.setPreferredWidth(60);
                c2.setPreferredWidth(120);
                c3.setPreferredWidth(90);
                c4.setPreferredWidth(400);
                c5.setPreferredWidth(150);
                c6.setPreferredWidth(90);
                c7.setPreferredWidth(80);
                c8.setPreferredWidth(80);

Это класс Wrap

class wrap extends JTextArea implements TableCellRenderer {
        wrap() {
            super();
            setLineWrap(true);
            setEditable(false);
            setWrapStyleWord(true);
            setBorder(BorderFactory.createEmptyBorder(5, 10, 5, 10));
        }

        @Override
        public Component getTableCellRendererComponent(JTable jtable, Object value, boolean bln, boolean bln1, int i, int i1) {
            setText((String) value);
            setFont(jTable1.getFont());
            setBackground(jTable1.getBackground());
            setForeground(jTable1.getForeground());            
            return this;
        }

    }

Я знаю, что это может потребовать много, но любое возможное объяснение с примером кода будет высоко оценено, так как я все еще новичок.

Вот пример изображения того, что происходит сейчас.Извините, мне пришлось размазать некоторые данные. enter image description here

...