/ / Java - Czy można umieścić obraz i ciąg znaków w tej samej komórce JTable? - java, swing, jtable, tablecellrenderer

Java - Czy można umieścić obraz i ciąg w tej samej komórce JTable? - java, swing, jtable, tablecellrenderer

Wiem, jak wstawić ciąg do komórki JTable i wiem, jak umieścić obraz w komórce JTable. Ale czy możliwe jest umieszczenie obrazu i łańcucha w SAMEJTable JTable?

Powodem tego jest to, że mam „status”kolumna w mojej tabeli JTable, która w tej chwili zawiera obraz zielony, bursztynowy lub czerwony. Aby spełnić wymaganie projektowe, muszę dodać tekst wyjaśniający obok każdego obrazu (więc tekst obok zielonego obrazu byłby „Online”, tekst obok bursztynowego obrazu byłby „Nieznany”, a tekst obok na czerwonym obrazku będzie „Offline”). Muszę to zrobić w jednej kolumnie (lub w tym, co wygląda / zachowuje się jak jedna kolumna), a nie w dwóch kolumnach.

Zbadałem to, ale nie znalazłem żadnych informacji.

Odpowiedzi:

4 dla odpowiedzi № 1

Tak.

Musisz użyć niestandardowego mechanizmu renderowania komórek. Sprawdzić Jak korzystać z tabel po więcej szczegółów.

W rzeczywistości masz dwie możliwości, możesz po prostu ustawić ikonę i tekst komórki lub zamiast tego możesz użyć tekstu etykiety narzędzia renderowania ...

public class IconTextCellRemderer extend DefaultTableCellRenderer {
public Component getTableCellRendererComponent(JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row,
int column) {
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
setText(...);
setIcon(...);
setToolTipText(...);
return this;
}
}

Oczywiście musisz zastosować moduł renderujący do kolumny ...

TableColumnModel tcm = table.getColumnModel();
tcm.getColumn(x).setCellRenderer(new IconTextCellRemderer());