Swing JTable Text im Hintergrund einer leeren Tabelle

Kaffeebohn

Bekanntes Mitglied
Hallo zusammen,

ich habe eine gewöhnliche JTable, die, sobald das Programm gestartet wird, erst mal leer ist. Nun möchte ich gerne - solange die Tabelle noch leer ist - im Hintergrund der Tabelle (die noch keine Felder hat) gerne einen Text-Hinweis einfügen, wie eine neue Zeile eingefügt werden kann. Da die Tabelle nur zum Lesen und nicht zum Bearbeiten der Daten dient, muss das einfügen auf andere, nicht ganz einfach zu findende Art und Weiße geschehen. Darum möchte ich solange die Tabelle leer ist, diesen Hinweis dort anbringen.

Gibt es eine Möglichkeit, das zu realisieren? Ist dieser Tabellenhintergrund zugänglich? Ich habe leider keine Möglichkeit gefunden.


Danke im Vorraus und viele Grüße,

Kaffeebohn
 
Vielleicht dies?

createDefaultRenderers()
Creates default cell renderers for objects, numbers, doubles, dates, booleans, and icons.

setDefaultRenderer(Class<?> columnClass, TableCellRenderer renderer)
Sets a default cell renderer to be used if no renderer has been set in a TableColumn.

setValueAt(Object aValue, int row, int column)
Sets the value for the cell in the table model at row and column.

valueChanged(ListSelectionEvent e)
Invoked when the row selection changes -- repaints to show the new selection.

Die andern haben sicher bessere Infos!
 
Eine leere JTable nimmt keinen Raum ein, wird also nicht angezeigt. Was sichtbar ist ist nicht der Tabellenhintergrund (ich nehme mal an die JTable steckt in einer JScrollPane) sondern der Viewport der ScrollPane.
Bin mir nicht sicher, aber vermutlich wird das nur mit dem überschreiben einer paintComponent an passender Stelle umzusetzen sein.
Falls hier niemand eine (andere) Lösung posten, kann ich mir das morgen mal genauer anschauen.

Eventuell hilft es ja auch schon diesen Text als Tooltip über der JScrollPane anzuzeigen.
 
Hi Michael,

Danke für den Hinweis, ich hab jetzt anstelle eines Textes ein Image genommen und einen eigenen Viewport gebaut:

Java:
JViewport view = new JViewport() {
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image, 0, 0, this);
}
}
};

view.add(table);
scrollpaneTodoList.setViewport(view);

Dort prüfe ich dann noch ob die Tabelle leer ist oder nicht.

Das reicht mir vorerst, lässt sich ja mit einem String dann ähnlich machen.

Viele Grüße,
Kaffeebohn
 
Zuletzt bearbeitet:

Zurück
Oben