# JTable: Jede Zelle mit eigenem ToolTip belegen



## roddy (9. Dez 2005)

Hallo, 

mein Problem ist das folgende: Ich habe eine Tabelle mit veränderbaren Zellen (ergo stehen in den Zellen keine JLabels oder sonstwas, sondern einfach Strings) und würde jetzt gerne auf jede Zelle einen ToolTip legen, da die Tabelle sehr groß und unübersichtlich ist. Ich kann ja als Tabellenzelle jeweils ein Object setzen. Nun war mein Gedanke, ich setz in jede Zelle ein JLabel, das ich vorher mit dem ToolTipBesetzt habe. Das bringts auch nicht wirklich, da jetzt in jeder Zelle die String-Repräsentation des jeweiligen JLabels steht, z.B.:


```
javax.swing.JLabel[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=8388608,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,horizontalAlignment=LEADING,horizontalTextPosition=TRAILING,iconTextGap=4,labelFor=,text=11,verticalAlignment=CENTER,verticalTextPosition=CENTER]
```

Hat mir jemand ne Anregung, wie ich das gewünschte hinbekommen könnte?


----------



## Sky (9. Dez 2005)

Du musst den ToolTip dann im Renderer setzen.


```
public Component getTableCellRendererComponent(...) {
setToolTipText(...);
}
```


----------



## roddy (9. Dez 2005)

Wie genau mache ich das? 

Da müsste ich doch dann einen eigenen TableCellRenderer schreiben... Oder meintest du es anders? Und auf dem Component-Object kann ich setToolTipText nicht ausführen...


----------



## Sky (9. Dez 2005)

roddy hat gesagt.:
			
		

> Und auf dem Component-Object kann ich setToolTipText nicht ausführen...


Verstehe ich nicht ?

Leite deinen Renderer von Default... ab und ruf auf:

```
super.getTable...
setToolTipText(...);
return this;
```


----------



## roddy (12. Dez 2005)

Ah, jetzt hab ich verstanden wie. Vielen Dank! Für diejenigen die - wie ich - gerne mal auf'm Schlauch stehen: 

Tabelle definieren:


```
bestand = new JTable(new RVTableModelBestand(EA.length,SA.length,columns));
        for (int i = 0; i<columns.length; i++){
            bestand.setDefaultRenderer(bestand.getColumnClass(i), new RVtablecellrenderer());
        }
```

Meinen Renderer definieren, damit die ToolTips gesetzt werden: 


```
package rvstat05;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;

public class RVtablecellrenderer extends DefaultTableCellRenderer{
    String[] EA, SA; // für diesen Zusammenhang uninteressant
    Properties projekt, auswert; // ebenso
    
    /** Creates a new instance of RVtablecellrenderer */
    public RVtablecellrenderer() {
        super(); // Nur diese Zeile ist im Constructor notwendig, Rest ist für meine 'Berechnung' der ToolTips
        projekt = RVproperties.getProjektCFG();
        auswert = RVproperties.getAuswertCFG();
        EA = readCFG.Erhebungsabschnitte(projekt, auswert);
        SA = readCFG.Stellplatzarten(projekt, auswert);        
    }
    
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column){
        super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
        setToolTipText("EA: " + EA[row] + "\rSA: " + SA[column]);
        return this;
    }
    
}
```

_Edit: Juhu, ich habe gerade das erste Mal ein Häkchen so setzen können, dass es funktioniert \o/_


----------



## Guest (13. Jun 2006)

roddy hat gesagt.:
			
		

> Ah, jetzt hab ich verstanden wie. Vielen Dank! Für diejenigen die - wie ich - gerne mal auf'm Schlauch stehen:
> 
> Tabelle definieren:
> 
> ...


----------

