Nixaja Geschrieben 30. Mai 2005 Geschrieben 30. Mai 2005 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 Zitieren
Peeter Geschrieben 30. Mai 2005 Geschrieben 30. Mai 2005 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] Zitieren
Peeter Geschrieben 30. Mai 2005 Geschrieben 30. Mai 2005 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] Zitieren
Nixaja Geschrieben 30. Mai 2005 Autor Geschrieben 30. Mai 2005 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 Zitieren
Peeter Geschrieben 30. Mai 2005 Geschrieben 30. Mai 2005 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] Zitieren
Nixaja Geschrieben 1. Juni 2005 Autor Geschrieben 1. Juni 2005 Hallo Peeter! Es funktioniert! Ich hab meinem DefaultTableCellRenderer nur nicht der Tabelle, sondern den einzelnen Spalten zugwiesen. Vielen Dank für deine Hilfe Nixaja Zitieren
redbomber Geschrieben 19. November 2008 Geschrieben 19. November 2008 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. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.