Mam podstawowy JTable i wymaganie jest takie, że po kliknięciu na dowolną komórkę cały wiersz powinien być podświetlony, a także, że kliknięta komórka powinna mieć inny kolor niż reszta zaznaczonego wiersza.Swing JTable - Zaznacz wybraną komórkę w innym kolorze niż reszta wybranego rzędu?
Obecnie mam isRowSelectionAllowed jak prawda
Próbowałem przy użyciu niestandardowego TableCellRenderer brzmi następująco:
public class CustomTableCellRenderer extends DefaultTableCellRenderer
{
public static final DefaultTableCellRenderer DEFAULT_RENDERER = new DefaultTableCellRenderer();
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
Component c = DEFAULT_RENDERER.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if (isSelected) {
c.setBackground(Color.red);
}
else {
c.setForeground(Color.black);
c.setBackground(Color.white);
}
return c;
}
}
Ale to nie wydają się działać (cały wiersz był zaznaczone na czerwono).
Próbowałem również ustawienie właściwości UIManager następująco:
UIManager.put("Table.focusCellBackground",
new javax.swing.plaf.ColorUIResource (Color.red));
Ale to nie wydają się działać albo (choć, gdy próbowałem wyznaczając granicę korzystając
UIManager.put("Table.focusCellHighlightBorder",
new BorderUIResource.LineBorderUIResource(Color.red));
że działa dobrze)
Czy możesz podać sugestie, co mogę zrobić?
Próbowałem tego, ale to wcale nie zmienia koloru. Przechodzi do warunku if dla 'isCellSelected' i' isRowSelected', ale nie robi nic. –
Przepraszam, mój błąd - próbowałem, a to działa. Wielkie dzięki. (Ustawienie jako zaakceptowanej odpowiedzi z powodu działającego kodu, inne odpowiedzi również były pomocne w nauce). –