Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

ToolTipText in einem JTable

Empfohlene Antworten

Veröffentlicht

Hallo zusammen!

Gibt es eine Möglichkeit, in einem JTable Header pro Spalte einen ToolTipText zu setzen?

Ich habe in einer Tabelle relativ viele Spalten unterzubringen. Deswegen werde ich in den einzelnen Spaltenheadern Abkürzungen verwenden, die ich im ToolTipText erklären will.

Ich dachte eigentlich, dass das doch kein Problem sein könnte. Aber ich komm net hinter das Geheimnis.

Danke für eure Hilfe

Nixaja

Also soweit ich weiß, musst du dir einen eigenen TableCellRenderer schreiben und die Klasse "DefaultTableCellRenderer" überschreiben. In dieser überschribst du dann die "getTableCellRendererComponent" - Methode und kannst da "setToolTipText" aufrufen. Das ganze funktioniert aber nur, weil der DefaultTableCellRenderer von JLabel erbt...

Grüße Peet...

Beispiel:


public final class MyTableHeaderRenderer extends DefaultTableCellRenderer {
public MyTableHeaderRenderer() {
super();
}

public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus, int row,
int column) {
// ToolTipText
this.setToolTipText("DER ToolTipText");
return this;
}
}
[/PHP]

WICHTIG! Ich vergaß nochwas... Du musst dir dann natürlich den TableHeader von der Tabelle holen und auf diesen Tableheader dann deinen Renderer setzen...


table.getTableHeader().setDefaultRenderer(
new MyTableHeaderRenderer());
[/php]

Hallo Peeter!

Mit dem DefaultTableCellRenderer wird aber auch mein momentaner Header ungültig. Und ich muss mich bei dem Tabellenaufbau an einen firmeninternen Standard orientieren.

Weist du vielleicht wie ich es schaffe, dass mein aktueller Header erhalten bleibt?

Danke

Lucie

Erbt der "firmeninterne" Renderer auch von DefaultTableCellRenderer?

Wenn ja, dann nutze doch die Methode "setToolTipText(String)" so wie weiter oben gezeigt. ;)

Die ist dann schon mit dabei!

Oder du schreibst dir trotzdem noch einen eigenen TableHeaderRenderer und erbst aber von dem firmeninternen TableCellRenderer...

Dann musst du in der Methode "getTableCellRendererComponent" nur folgendes machen:


public Component getTableCellRendererComponent(JTable table,Object value, boolean isSelected, boolean hasFocus, int row, int column) {
super.getTableCellRendererComponent(table, value, isSelected,hasFocus, row, column);

// ToolTipText
this.setToolTipText("DER ToolTipText");
return this;
}
[/php]

Hallo Peeter!

Es funktioniert! :D

Ich hab meinem DefaultTableCellRenderer nur nicht der Tabelle, sondern den einzelnen Spalten zugwiesen.

Vielen Dank für deine Hilfe

Nixaja

  • 3 Jahre später...

super vielen Dank, das hat mir auch weiter geholfen.

Jetzt habe ich aber noch eine Frage:

Mit

TableColumn tc = getColumnModel().getColumn(0);

for (int i=1; i!=getColumnModel().getColumnCount(); ++i) {

			TableColumn tc = getColumnModel().getColumn(i);

			tc.setCellRenderer(new TooltipCellRenderer());

}

Setze ich ja meinen TooltipCellRenderer für die komplette Spalte.

Kann ich diesen Renderer auch für eine einzelne Zelle setzen?

Sonst zeigt er mir ja bei jeder Spalte dieselbe Toolbox an.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.