Java Swing - Поместите границу вокруг строки JTable, когда строка имеет типы Boolean и String (Nimbus Look and Feel)

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

У меня есть JTable. Мне нужно поместить красную рамку вокруг определенных строк, которые удовлетворяют определенному условию (нет значения в столбце типа класса). Когда в JTable были только строки, следующий код работал. С тех пор я добавил логический столбец (JCheckBoxes) в JTable, из-за чего мой код больше не ставил рамку вокруг всей строки. Как я могу исправить код, чтобы снова поставить рамку вокруг всей строки?

Это действительно проблема внешнего вида. Использование System LAF (в Windows 10) позволяет правильно поставить границу вокруг всей строки, а использование Nimbus LAF позволяет отображать ее, как показано ниже. Тем не менее, я хотел использовать Nimbus, поэтому я буду благодарен за любые советы по исправлению этой части Nimbus.

Я использую средства визуализации по умолчанию, предоставляемые Java с помощью NetBeans, как показано на одном из изображений ниже. Для всех 4 столбцов Renderer установлен на «none».

Пользовательский код создания в NetBeans для JTable:

new javax.swing.JTable()
{
    @Override
    public Component prepareRenderer(TableCellRenderer renderer, int row, int column)
    {
        Component c = super.prepareRenderer(renderer, row, column);
        JComponent jc = (JComponent) c;

        if (rowContainsNonexistentClassType(tableFullClassList.convertRowIndexToModel(row)))
        {
            int top = (row > 0 && isRowSelected(row - 1)) ? 1 : 2;
            int left = column == 0 ? 2 : 0;
            int bottom = (row < getRowCount() - 1 && isRowSelected(row + 1)) ? 1 : 2;
            int right = column == getColumnCount() - 1 ? 2 : 0;

            jc.setBorder(BorderFactory.createMatteBorder(top, left, bottom, right, Color.RED));
        }
        else
            jc.setBorder(null);

        return c;
    }
}

Как это выглядело, когда в JTable были только строки: Java Swing - Поместите границу вокруг строки JTable, когда строка имеет типы Boolean и String (Nimbus Look and Feel)

Как это выглядит с JTable, имеющим строки и логические значения: Java Swing - Поместите границу вокруг строки JTable, когда строка имеет типы Boolean и String (Nimbus Look and Feel)

Параметры столбца JTable в NetBeans: Java Swing - Поместите границу вокруг строки JTable, когда строка имеет типы Boolean и String (Nimbus Look and Feel)

У меня отлично работает. Я использую JDK8 в Windows 7. См. Рабочие примеры Отрисовка строки таблицы. Разместите свой минимальный воспроизводимый пример, демонстрирующий проблему. Может, это проблема LAF?

camickr 08.05.2018 21:36

Хм. Ваше предложение LAF верное. Использование System Look and Feel делает его правильным (по крайней мере, в Windows 10), в то время как он выглядит так, как на изображениях выше, если я использую Nimbus LAF. Я отредактирую свой вопрос, указав информацию о LAF.

cmasupra 08.05.2018 22:13

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

William 08.05.2018 22:37

Есть ли способ обойти проблему в Nimbus? Я ищу способы изменить Nimbus, но, похоже, он ограничен настройкой размеров и цветов. Изготовленный на заказ Synth LAF может быть лучшим вариантом.

cmasupra 08.05.2018 23:11
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
4
222
0

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