Transparenz

ChantalM

Mitglied
Will einen JFrame oder JDialog transparent machen, z.B. mit

Code:
com.sun.awt.AWTUtilities.setWindowOpacity(frame,0.3f);

Ein beinhaltendes JTree soll nicht transparent sein. Geht das überhaupt?


Code:
import java.awt.BorderLayout; 
import javax.swing.JFrame; 
import javax.swing.JTree;  
import javax.swing.tree.TreePath; 

public class JTreeTest extends JFrame  { 

   public JTree tree; 

   public JTreeTest() { 
    super("JTreeTest");    
    tree = new JTree();       
    getContentPane().add(tree, BorderLayout.CENTER); 
    pack();       
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setVisible(true); 
   } 
   public static void main(String[] args) {       
      JTreeTest test = new JTreeTest(); 
   } 
}
 
Hi,

also was mir jetzt spontan einfallen würde ist, die entsprechenden paint-Methoden zu überschreiben. Statt den JFrame über setWindowOpacity transparent zu machen einfach nur den Hintergrund des JFrames transparent zeichnen lassen, in etwa so:

Code:
  @Override
      public void paint( Graphics g )
      {
        Graphics2D g2d = ( Graphics2D )g;
        Composite original = g2d.getComposite();
        
        AlphaComposite ac1
            = AlphaComposite.getInstance(AlphaComposite.SRC_OVER,
                                         0.2f);
        g2d.setComposite(ac1);
        g2d.setColor( Color.blue );
        g2d.fillRect( getBounds().x, getBounds().y,getBounds().width,  getBounds().height );
        
        g2d.setComposite(original);

        super.paint(g2d);
      }

So in etwa. Vielleicht musst du den Background des Frames noch auf null setzen, damit der super-Aufruf den gezeichneten Hintergund nicht wieder übermalt.
So wird auf jeden Fall nur der Hintergrund des Frames transparent, der Rest würde normal gezeichnet...

Gruß shocking
 

Neue Beiträge

Zurück