Функция выбора строки отключена после использования визуализации ячейки

StackOverflow https://stackoverflow.com/questions/4254495

  •  27-09-2019
  •  | 
  •  

Вопрос

Я ясна что-то не так. Мое предположение будет компонентом, но вот проблема. Это моя клеточная рендер:

public class WildcardCellRenderer implements TableCellRenderer {

    @Override
    public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int rowIndex, int vColIndex) {

        JTextField c = new JTextField();
        c.setBorder(javax.swing.BorderFactory.createEmptyBorder());

        if(vColIndex == 2){
            if((Integer)value == 0) c.setText("No") ;
            else c.setText("Si");
        } else c.setText(value.toString());

        return c;
    }

}

И вот как я настроил вещь на моей панели:

    this.table.setDefaultRenderer(Object.class, new WildcardCellRenderer() );

Проблема в том, что когда я настроил этот рендер, строки становятся невыжелезными. Должен ли я использовать другой компонент для отображения того, что мне нужно отобразить? В основном я показываю значение 0/1 как значение NO / YES.

Это было полезно?

Решение

Вам необходимо воспользоваться значением «Isseliced» и настроить цвет фона соответственно, например:

 if (isSelected) {
        c.setBackground(table.getSelectionBackground());
        c.setForeground(table.getSelectionForeground());
    }
    else {
        c.setBackground(table.getBackground());
        c.setForeground(table.getForeground());
    }

Я взял это из одного из моих моих ListCellRenderers, но я предполагаю, что это работает так же с скатеррементом.

О, и кстати, вы можете повторно использовать текстовое поле, нет необходимости создавать новое текстовое поле для каждой ячейки, чтобы вы могли сделать текстовое поле участником вашего класса, а внутри метода просто изменить что-то в вашем текстовом поле, как контент / Цвет и верните его. Таким образом, вы не заканчиваете миллион экземпляров текстовых полей на большом столе.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top