[SWT] Hintergrundfarbe von Shell und Composite

EvilSpirit

Grünschnabel
Hallo,
ich habe in einem SWT-Projekt zwei Shells. Die eine wird angezeigt, die andere nicht. Zusätzlich gibt es ein Array von Composite, die dynamisch zwischen den beiden Shells hin- und her gegeben werden, damit sie dynamisch angezeigt werden können. Das klappt auch alles ganz toll.
Nun mein Problem:
Damit alles etwas ansprechender aussieht, hat die sichbare Shell eine beige Hintergrundfarbe. Die Composites in den Array und die unsichtbare Shell sind ohne Farbspezifikation (also standard-grau) erstellt wurden. Wnn ich die sichtbare Shell ohne ein Composite anzeige, stimmt die Hintergrundfarbe. Sobald aber die Composites zwischen den beiden Shells ausgetauscht werden, ist der Hintergrund immer Grau.
Das nachträgliche setzen der gewünschten Hintergrundfarbe von Shell und/oder Composite hat keinen Effekt. Hilfe, wer weis warum SWT das so macht und wie kann ich das abstellen?
 
Da die Composites Grau sind und auf der Shell liegen, bleibt von der Hintergrundfarbe der Shell halt nichts mehr übrig und du siehst den grauen Hintergrund der Composites (wenn ich das richtig verstanden habe).

Wenn du die Composites auf eine andere Shell setzt müsstest du also auf dem Composite auch noch die Hintergrundfarbe der Shell übernehmen.
 
Wie gesagt, das nachträgliche setzen der gewünschten Hintergrundfarbe bei zu zeigenden Composite hat keinen Effekt.
Wenn ich mir die Sache im Debugger anschaue, hat die Composite bereits die richrige Adresse meiner Wunschfarbe.
 
Mal redraw() und update() nach dem setzen der Farbe aufrufen.
 
Zuletzt bearbeitet:
hat immer noch keinen Effekt. Hier mal der Code:

Java:
private void setContent( int index )
	{
		// hier werden alle Composites "versteckt"
		for( Composite composite : this.content )
        	composite.setParent( this.bufferTip );
        
        // hier wird das betreffende hinzugefügt
        if( index != -1 )
        {
        	this.content.get( index ).setParent( this.toolTip );
        	this.content.get( index ).setBackground( this.color );
        }
        
        this.toolTip.redraw();
        this.toolTip.update();
        this.toolTip.layout();
	}
 
Ich meinte auch:

Java:
private void setContent( int index )
{
	// hier werden alle Composites "versteckt"
	for( Composite composite : this.content )
        composite.setParent( this.bufferTip );
        
        // hier wird das betreffende hinzugefügt
        if( index != -1 )
        {
        	Composite comp = this.content.get( index ); //warum zweimal das get? :)
        	comp.setParent( this.toolTip );
        	comp.setBackground( this.color );
        	comp.redraw();
        	comp.update();
        }
}
 

Neue Beiträge

Zurück