Swing BalloonTip erscheint nicht in den ersten Zeilen einer JXTable

Blokko

Mitglied
Hallo zusammen,

wir verwenden zur Anzeige eines Validierungsfehlers in einer Tabellenzelle die Bibliothek
Code:
net.java.balloontip
. Genauer gesagt eine Kopie der Klasse
Code:
TablecellBalloonTip
, also erweitert von
Code:
CustomBalloonTip
. Die Tabelle selbst ist eine
Code:
JXTable
.

Prinzipiell funktionieren diese BalloonTips auch wunderbar, außer, und jetzt kommt das Phänomen, in den ersten drei Zeilen der Tabelle. Wir benutzen den
Code:
RightAbovePositioner
. Ich habe es mal mit einem der "BelowPositioner" probiert, dort funktionieren die ersten zwei Zeilen nicht.
Sobald ich die Zeilen anders sortiere, also z.B. dass diese Zeilen unten sind, funktionieren die BalloonTips.
Auch habe ich den BalloonTip mal strikt für jede Zeile auf die Position der ersten Zeile gesetzt, sodass ich ausschließen konnte, dass dort die BalloonTips gezeichnet werden können. Funktioniert einwandfrei, außer für die ersten Zeilen.
Als nächstes habe ich den BalloonTip mal strikt auf eine Zeile in der Mitte der Tabelle angelegt und auch dort funktionierten sie, außer, ihr könnt es euch schon denken, in den ersten drei Zeilen.

Was kann das also sein? Werden hier die Zellenobjekte nicht richtig ermittelt?
Die BalloonTip-Objekte werden zumindest erstellt und zugewiesen, das habe ich schon überprüft.
Kann hier noch etwas anderes dazwischenfunken?

Ich weiß, konkrete Lösungen kann mir wahrscheinlich keiner anbieten. Aber ich bin um jede Hilfe, Ideen, Ansätze dankbar.

Vielen Dank schon mal!

Grüße,
Blokko
 
überprüf mal zuerst, ob das Verhalten spezifisch für JXTable ist oder auch bei einer JTable auftritt (einfach ersetzen in Deinem Code). Im ersten Fall hilft nur, ein SSCCE zu posten, damit jemand versuchen kann den Fehler zu reproduzieren/finden.

Gruß
Jeanette
 
Hallo,

vielen Dank für die Antworten.
Doch der Source Code wäre eindeutig zu umfangreich, um den hier zu posten.

Jedoch bin ich nun weiter:
Ich weiß nun, dass der Viewport nicht mehr passt und deswegen der BalloonTip invisible gesetzt wird.

Die Tabelle ist in einer JScrollPane und zusätzlich ist noch ein TableHeader für die Tabelle gesetzt.
Ich fasse das mal kurz im folgenden Code zusammen...

Klasse WeTablePanel:
(globale Variablen habe ich zur Kennzeichnung hier mit
Code:
this.
vorangestellt)
Java:
protected void createTable()
    {
        if (this.table == null)
        {
            if (this.tableId == null)
            {
                this.table = new WeTableStandard();
            }
            else
            {
                this.table = new WeTableStandard(this.tableId);
            }
        }
        if (this.model != null)
        {
            this.table.setModel(this.model);
        }
        this.scrollPane = new WeScrollPane(this.table);
        this.table.setColumnControlVisible(true);
        this.table.setAutoResizeMode(JXTable.AUTO_RESIZE_OFF);
    }

Klasse WeTableStandard:
Java:
    protected WeTableStandard(String tableId)
    {
        super();
        putClientProperty(IWeTable.TABLE_ID, tableId);
        init();
        ...
    }

    protected void init()
    {
        ...
        WeTableHeader header = new WeTableHeader(getColumnModel());
        setTableHeader(header);
        ...
    }

Jetzt ist mir aufgefallen, dass der Viewport "zu tief hängt". Er liegt zwar auf den Zeilen der Tabelle, jedoch nicht über den ersten. Dafür hängt er den Teil der oben fehlt unten drüber.
Die Größe dieses Teils passt exakt auf die Größe des Headers.

Kann es sein, dass der TableHeader den Viewport nach unten verschoben hat, obwohl der Viewport sowieso unterhalb des TableHeaders beginnt?

Grüße,
Blokko
 
Doch der Source Code wäre eindeutig zu umfangreich, um den hier zu posten.

Niemand (ich jedenfalls sicher nicht ;-) hat Lust sich durch **all** Deinen Code zu wühlen: lies meine Antwort bitte nochmal genau (hint: SSCCE kannst Du googlen ...)

Außerdem hast Du vergessen auf meine Frage zu antworten: nämlich ob dieses Problem auch für eine einfache JTable oder nur für JXTable auftritt.

Gruß
Jeanette
 

Zurück
Oben