Window transparent, Komponenten nicht transparent

Nioukie

Mitglied
Hi Leute,

ich möchte wie der Titel schon sagt auf meinem halbtransparenten Fenster nicht-transparente Komponenten platzieren. Leider wird das ganze Fenster inklusive Komponenten halbtransparent. Dass es gehn muss zeigt dieses Beispiel: http://java.sun.com/developer/technicalArticles/GUI/translucent_shaped_windows/#Setting-the-Shape-of-a-Window

In Figure 10 sieht man dass das Fenster halbtransparent und der Button nicht transparent ist. Genau so soll mein Fenster auch aussehen. Solange ich mir den Code aber auch anschaue bzw. damit experimentiere, ich verstehe nicht welcher Teil das Fenster so aussehen lässt.

Kann mir jemand helfen? Ich habe das Gefühl ich stehe direkt vor der Lösung aber scheinbar bin ich blind. ???:L

Edit: Ich habe den Beitrag http://www.java-forum.org/awt-swing-swt/103622-shaped-translucent-windows.html schon gesehen, der hilft mir aber leider nicht weiter weil ich ja mein Window HALBtransprarent machen will. Ich habe es schon geschafft das Window komplett transparent zu machen und nur die Komponente anzuzeigen, aber es soll eben halbtranparent sein.
 
Zuletzt bearbeitet:

Nioukie

Mitglied
Also hiermit wird beides (Window und Komponente) transparent:

Java:
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;

public class TranslucencyWindow extends JFrame  {
	private Container cp;
	private Shape shape;

	public TranslucencyWindow() {

		//Init Window
		setUndecorated(true);
		com.sun.awt.AWTUtilities.setWindowOpacity(this, .85f);
		cp = getContentPane();

		//Init Components
		ImageIcon i = new ImageIcon(getClass().getResource("/Pictures/basic_window.gif"));
		JLabel j = new JLabel(i);
		j.setBounds(0, 0, i.getIconWidth(), i.getIconHeight());
		j.setOpaque(true);      //hat keine ersichtliche Wirkung 
		
		cp.add(j);
		setSize(800,800);
		setVisible(true);
	}	
	
	public static void main(String[]args){
		TranslucencyWindow d = new TranslucencyWindow();
	}
}


Wenn ich den Code so umschreibe, ist das Fenster komplett transparent und nurnoch die Komponente zu sehen:

Java:
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;

public class TranslucencyWindow extends JFrame  {
	private Container cp;
	private Shape shape;

	public TranslucencyWindow() {

		//Init Window
		setUndecorated(true);
//		com.sun.awt.AWTUtilities.setWindowOpacity(this, opacity);
		com.sun.awt.AWTUtilities.setWindowOpaque(this, false);
		cp = getContentPane();

		//Init Components
		ImageIcon i = new ImageIcon(getClass().getResource("/Pictures/basic_window.gif"));
		JLabel j = new JLabel(i);
		j.setBounds(0, 0, i.getIconWidth(), i.getIconHeight());
//		j.setOpaque(true);
		
		cp.add(j);
		setSize(800,800);
		setVisible(true);
	}	
	
	public static void main(String[]args){
		TranslucencyWindow d = new TranslucencyWindow();
	}
}

}

Ich brauche aber eine Mischung aus beiden, also Komponente undurchsichtig, Fenster halbtransparent.
 

Nioukie

Mitglied
Auf die Weise hatte ichs schonmal probiert, ohne Erfolg, aber durch den von dir geposteten Link hab ich auch endlich kapiert warum... Für die Per-Pixel-Translucency braucht man JDK 7 und ich hatte nur JDK 6... Danke danke danke eeendlich funktionierts :applaus:
 

Nioukie

Mitglied
Oh ich seh grade ich hab da noch ein Problem :/

Ich möchte den Effekt auf ein "selbst geformtes" Fenster anwenden... Leider erhalte ich mit der Methode setBackground wieder ein rechteckiges Fenster... Hat jemand noch ne Idee wie ich das am geschicktesten lösen könnte?


Hier mein Code:

Java:
package audioplayer;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.geom.*;
import java.io.File;

import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

import com.sun.awt.AWTUtilities;
import javax.media.*;


public class Display extends JFrame  {
	private Container cp;
	private Shape shape;
	
	private JButton testbutton;
	
	public Display(){		
		
		//Init Window
		setUndecorated(true);
        Color back = getBackground();
        setBackground(new Color(back.getRed(), back.getGreen(), back.getBlue(), 128));
        initWindowShape();
			
		cp = getContentPane();
		testbutton = new JButton("Test");
		cp.add(testbutton);
		
		setSize(800,800);
		setVisible(true);
	}	
	
	
	private void initWindowShape()
	{
		GeneralPath myPath = new GeneralPath(GeneralPath.WIND_EVEN_ODD);
		myPath.moveTo(0, 600);
		myPath.quadTo(0, 0, 500, 0);
		myPath.lineTo(600, 0);
		myPath.quadTo(600, 600, 0, 600);
		myPath.closePath();
		
		AffineTransform af = new AffineTransform();
		shape = myPath.createTransformedShape(af);
		shape = af.createTransformedShape(shape);

		
		com.sun.awt.AWTUtilities.setWindowShape(this, shape);
	}


	public static void main(String[]args){
		Display d = new Display();
	}
}
 
Zuletzt bearbeitet:

LoR

Bekanntes Mitglied
Schnell mal in Netbeans zusammengeklickt und deinen Code eingefügt. Funktioniert wunderbar.

Java:
import java.awt.Color;
import java.awt.Shape;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.awt.geom.AffineTransform;
import java.awt.geom.GeneralPath;
import javax.swing.JFrame;

public class J2dFrame extends JFrame {

    public J2dFrame() {
        setUndecorated(true);
        Color back = getBackground();
        setBackground(new Color(back.getRed(), back.getGreen(), back.getBlue(), 128));
        addComponentListener(new ComponentAdapter() {

            @Override
            public void componentResized(ComponentEvent e) {
                GeneralPath myPath = new GeneralPath(GeneralPath.WIND_EVEN_ODD);
                myPath.moveTo(0, 600);
                myPath.quadTo(0, 0, 500, 0);
                myPath.lineTo(600, 0);
                myPath.quadTo(600, 600, 0, 600);
                myPath.closePath();

                AffineTransform af = new AffineTransform();
                Shape shape = myPath.createTransformedShape(af);
                shape = af.createTransformedShape(shape);
                setShape(shape);
            }
        });
        initComponents();
    }

    private void initComponents() {
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 679, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 614, Short.MAX_VALUE)
        );

        pack();
    }
}
 

Nioukie

Mitglied
Danke dass du mir so viel hilfst! Leider funktioniert dein Code bei mir aber nicht, hab ihn in Eclipse reinkopiert, die Klasse instanziiert und setvisible(true) gesetzt aber es wird wieder ein rechteck und nicht die Mandelform :( Wie kann das sein??

Edit: Sobald ich setBackground auskommentiere, ist meine Form wieder zu sehn, allerdings eben wieder nicht transparent ...
 
Zuletzt bearbeitet:

Nioukie

Mitglied
Habs jetzt endlich geschafft, dein Code funktioniert natürlich einwandfrei, hatte übersehen dass ich nicht nur das Default JDK umstellen, sondern es auch im bestehenden Projekt ändern muss :oops:

(Falls jemand später mal mit dem selben Problem auf diesen Thread stößt: Rechtsklick auf das Projekt > Properties > Java Build Path > Libraries dort das Alte mit Remove entfernen und das neue JDK via Add Library > JRE System Library > Workspace Default einstellen )

Vielen Dank nochmal für die Hilfe :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
izoards Java FX Window Event SHOWING AWT, Swing, JavaFX & SWT 17
ruutaiokwu SWT "Google Window Builder" tut keine jar's ins Projekt rein bei SWT-Projekt AWT, Swing, JavaFX & SWT 22
L JavaFX AnchorPane an die Größe der Scene oder Window binden? AWT, Swing, JavaFX & SWT 3
A Objekt von einem Window erstellen? AWT, Swing, JavaFX & SWT 8
S Window Builder AWT, Swing, JavaFX & SWT 20
I Modal Window AWT, Swing, JavaFX & SWT 26
ralfb1105 JavaFX Wie Text Label in neuem Window von Main Stage setzen? AWT, Swing, JavaFX & SWT 6
C JavaFX Window-Position AWT, Swing, JavaFX & SWT 3
Neumi5694 java.awt.Window nach javafx.stage.Window AWT, Swing, JavaFX & SWT 1
T Custom Window ohne Swing / AWT / FX..?! AWT, Swing, JavaFX & SWT 1
Ghostman1711 GUI Java von Klasse mit Application Windows anderes Application Window aufrufen AWT, Swing, JavaFX & SWT 6
Z Window Builder - Labels mit setText befüllen AWT, Swing, JavaFX & SWT 11
B JavaFX Werte aus eingefügtem Window lesen AWT, Swing, JavaFX & SWT 0
EisKaffee Swing Window Builder installieren AWT, Swing, JavaFX & SWT 1
D SWT Window passt Größe nicht an AWT, Swing, JavaFX & SWT 4
H Drag component out of window AWT, Swing, JavaFX & SWT 1
B Swing "Window Manager" - Gedankenprobleme AWT, Swing, JavaFX & SWT 9
G Window aus anderer Klasse aufrufen AWT, Swing, JavaFX & SWT 4
J Swing Window-Builder-Projekt richtig übertragen AWT, Swing, JavaFX & SWT 2
H Swing Google Window-Builder AWT, Swing, JavaFX & SWT 4
S Flackerndes Window beim DnD AWT, Swing, JavaFX & SWT 37
D SWT CheckBox auslesen (Window Builder Pro) AWT, Swing, JavaFX & SWT 2
frankred Swing Canvas nach "Window-resize" neu Zeichnen lassen wegen Anzeigefehler AWT, Swing, JavaFX & SWT 4
B Swing Window nur bedingt im Vordergrund AWT, Swing, JavaFX & SWT 5
R Swing Sequenz aus farbigen Quadraten in Window anzeigen AWT, Swing, JavaFX & SWT 11
J Fehlermeldung adding a window to a container AWT, Swing, JavaFX & SWT 9
L AWT Window, Dialog und verschiedene Betriebssysteme AWT, Swing, JavaFX & SWT 2
3 Eigenes Frame/Window programmieren AWT, Swing, JavaFX & SWT 2
T SWT Window Builder Pro File Dialog anzeigen AWT, Swing, JavaFX & SWT 10
J Swing kann window nicht übergeben AWT, Swing, JavaFX & SWT 14
L Fenster inaktiv setzen / deaktivieren (unable to close window) AWT, Swing, JavaFX & SWT 16
data89 Code-completion-window erzeugen - wie? AWT, Swing, JavaFX & SWT 2
Spin Window Event Beispiel AWT, Swing, JavaFX & SWT 6
H Eclipse View / Window Layout AWT, Swing, JavaFX & SWT 3
T Exception: Adding a window to a container AWT, Swing, JavaFX & SWT 14
M "Window"-Bibilotheck AWT, Swing, JavaFX & SWT 4
I JFrame-Anmerkung "Java Applet Window" entfernen AWT, Swing, JavaFX & SWT 4
T Synchrones Window-verschieben AWT, Swing, JavaFX & SWT 4
K Prompt window in Java? AWT, Swing, JavaFX & SWT 3
S Window über beide Bildschirme maximieren AWT, Swing, JavaFX & SWT 8
F Window#setAlwaysOnTop und Java 1.4.x AWT, Swing, JavaFX & SWT 5
M createImage in Window-Unterklasse AWT, Swing, JavaFX & SWT 4
M Window unterteilen AWT, Swing, JavaFX & SWT 9
R JFrame -- Variable Positionierung durch Window Manager? AWT, Swing, JavaFX & SWT 2
G Window in Taskleiste AWT, Swing, JavaFX & SWT 13
G Window wird angezeigt, nur der Inhalt nicht AWT, Swing, JavaFX & SWT 5
S Window Listener, Exit, bin am Verzweifeln AWT, Swing, JavaFX & SWT 24
U Reaktion auf closing window AWT, Swing, JavaFX & SWT 7
G Listener fuer Window Close AWT, Swing, JavaFX & SWT 2
M not serializable: sun.awt.window.WImage AWT, Swing, JavaFX & SWT 8
N frage ueber D&D von window wie in einige IDE AWT, Swing, JavaFX & SWT 7
P Transparentes Window/JFrame (mit SkinLF?) AWT, Swing, JavaFX & SWT 10
R "Statusbar" - JFrame mit 'Java Applet Window' AWT, Swing, JavaFX & SWT 18
S Performance-Problem: JTextArea als Logging-Window AWT, Swing, JavaFX & SWT 8
J Window Listener funzt nicht richtig AWT, Swing, JavaFX & SWT 5
R Die (J)Frame window listener AWT, Swing, JavaFX & SWT 7
H Transparent zeichnen mit drawImage in paintComponent Methode AWT, Swing, JavaFX & SWT 3
L AWT .gif image transparent machen AWT, Swing, JavaFX & SWT 3
E Transparent zeichnen AWT, Swing, JavaFX & SWT 2
L JavaFX TableView background transparent machen AWT, Swing, JavaFX & SWT 7
V JavaFX Teile eines Images Transparent machen AWT, Swing, JavaFX & SWT 4
stylegangsta JButton Transparent anzeigen AWT, Swing, JavaFX & SWT 9
T Rectangle Transparent und darunter liegende Objekte Bedienbar AWT, Swing, JavaFX & SWT 0
B Dropdown "Einstellungen" auf JPanel, transparent AWT, Swing, JavaFX & SWT 1
T AWT Bild laden und transparent zeichnen AWT, Swing, JavaFX & SWT 2
T Jframe Transparent machen AWT, Swing, JavaFX & SWT 3
N Swing Frame ungewollt transparent! AWT, Swing, JavaFX & SWT 2
T transparent geht nicht (btw: rechteck) AWT, Swing, JavaFX & SWT 13
C Swing Button color transparent AWT, Swing, JavaFX & SWT 4
eLogic png transparent auf Desktop Zeichnen AWT, Swing, JavaFX & SWT 3
S Graphics2D: Transparent übereinander zeichnen AWT, Swing, JavaFX & SWT 7
A Swing JCheckbox transparent machen AWT, Swing, JavaFX & SWT 7
B RootPane bzw CardLayout Transparent machen AWT, Swing, JavaFX & SWT 7
M Wie kann man 2 JPanel aufeinander transparent legen? AWT, Swing, JavaFX & SWT 4
lumo SWT Canvas transparent AWT, Swing, JavaFX & SWT 4
I 2 Panels übereinander, 1 transparent AWT, Swing, JavaFX & SWT 2
S JFrame transparent? AWT, Swing, JavaFX & SWT 8
martin82 Swing JTable - selectionBackground transparent AWT, Swing, JavaFX & SWT 7
N GridBagLayout, leere grids (Hintergrund) transparent? AWT, Swing, JavaFX & SWT 3
SuperSeppel13 Komponente transparent übermalen AWT, Swing, JavaFX & SWT 2
R Swing Warum wird der Inhalt auch Transparent? AWT, Swing, JavaFX & SWT 8
Guybrush Threepwood JRadioButton transparent AWT, Swing, JavaFX & SWT 2
K JProgressBar transparent AWT, Swing, JavaFX & SWT 10
R JPanel Transparent AWT, Swing, JavaFX & SWT 3
Kr0e Png transparent AWT, Swing, JavaFX & SWT 1
G JTabbedPane transparent AWT, Swing, JavaFX & SWT 2
K Swing: ContentPane von JDialog ist transparent (Fehler) AWT, Swing, JavaFX & SWT 10
T nach resize transparent weg AWT, Swing, JavaFX & SWT 4
G JComboBox und JTable transparent AWT, Swing, JavaFX & SWT 18
G JButton transparent AWT, Swing, JavaFX & SWT 3
M Hintergrund Transparent machen? AWT, Swing, JavaFX & SWT 3
S Button transparent machen AWT, Swing, JavaFX & SWT 8
G schwarzen hintergrund von png transparent machen AWT, Swing, JavaFX & SWT 2
B JFrame Transparent darstellen AWT, Swing, JavaFX & SWT 4
S transparent + bewegen AWT, Swing, JavaFX & SWT 3
F Transparent bzw. transfluent(durscheinend) drucken? AWT, Swing, JavaFX & SWT 2
F Checkbox transparent machen ? AWT, Swing, JavaFX & SWT 2
S JTextArea background Transparent geht nicht AWT, Swing, JavaFX & SWT 23
L JScrollPane Transparent machen AWT, Swing, JavaFX & SWT 4
G hintergrund von JFrame/Container transparent machen AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben