Wie setze ich JFrame Hintergrund transparent, aber JPanel oder JLabel Background opak?

7

Gemäß der Aufgabe müssen wir einen Bildbetrachter erstellen, genau wie Picasas. Bild in der Mitte, transluzenter schwarzer Hintergrund und wechselnde Bilder mit den linken / rechten Tasten.

Ich kann ein Bild anzeigen, das auf Unterfarbe gesetzt ist, und setze es auf einen durchscheinenden Rahmen, aber zusammen mit einem Rahmen wird das Bild durchscheinend. Was mache ich falsch?

%Vor%

Ich habe es versucht

%Vor%

hat nicht funktioniert

wenn ich einen booleschen und getesteten

genommen habe %Vor%

ist nur sichtbare Rückgaben wahr, Rest sind falsch, sind diese irgendwelche Faktoren?

    
sabbibJAVA 28.07.2012, 19:00
quelle

1 Antwort

19

Das Problem ist, dass der JFrame -Manager von Layout ein BorderLayout ist, das bedeutet, dass Ihr ShowImage -Fenster den gesamten Bereich des Rahmens ausfüllt (in schwarz). Ich wette, wenn Sie den Hintergrund von ShowPane auf rot geändert haben. Es würde stattdessen vollständig rot angezeigt werden

Nun können Sie sich Ein visueller Leitfaden für Layout-Manager ansehen oder ändern So funktioniert dein ShowPane

AKTUALISIEREN

Entschuldigung, ich bin nicht vertraut mit der neuen Transparenz-API in Java 7 (immer noch mit dem Java 6-Hack;))

Können Sie mir bestätigen, dass dies die Art von Effekt ist, nach der Sie suchen? Wo das gelesene Quadrat das Bild wäre (und der schwarze Hintergrund ist das Bild - nb, ich habe nur den Rahmen aufgenommen)

AKTUALISIEREN

Zuerst möchten Sie Window.isOpaque und Window.setBackground um zu verstehen, wie diese Lösung funktioniert.

Verwenden Sie als Nächstes Window.setOpacity nicht , es wird nicht erreichen, was Sie wollen. Der Hauptgrund dafür ist, dass der Opazitätswert auf den übergeordneten und die untergeordneten Elemente angewendet wird (dies zuerst durch mich).

Also, der Bildcode:

%Vor%

Die ContentPane . Im Grunde müssen wir die Farben-Engine "tricksen", um zu denken, wo transparent (nicht undurchsichtig) und dann unsere eigene Opazität zu malen

%Vor%

Es tut mir leid für meine frühere Antwort, aber ich hoffe, das macht das wieder wett;)

AKTUALISIEREN mit Schaltflächen

So habe ich es modifiziert

%Vor%

    
MadProgrammer 28.07.2012, 22:06
quelle