2010-06-18 4 views
1

Je voudrais créer un JWindow qui a non seulement une opacité, mais je veux changer la couleur par défaut de l'opacité dans Swing.JWindow avec l'opacité noire

Ainsi, par exemple, si j'écris:

AWTUtilities.setWindowOpacity(this, 0.5f); 

Cela fera faire exactement ce que je veux à une exception près, la couleur est blanche. Comment puis-je rendre la couleur noire?

J'ai essayé tout de setBackground(Color.Black), etc. sur "ce" ...

Répondre

2
 window.getContentPane().setBackground(Color.BLACK); 
0

Transparent JWindow.

public class TransparentWindow{ 

    JWindow window; 

    public TransparentWindow(){ 
     initializeTransparentWindow(); 
    } 

    private void initializeTransparentWindow() { 
     // searching graphical configuration that provide transparent window 
     GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment(); 
     GraphicsDevice[] devices = env.getScreenDevices(); 
     GraphicsConfiguration translucencyCapableGC = null; 
     for (int i = 0; i < devices.length && translucencyCapableGC == null; i++) { 
      GraphicsConfiguration[] configs = devices[i].getConfigurations(); 
      for (int j = 0; j < configs.length && translucencyCapableGC == null; j++) { 
       if (AWTUtilities.isTranslucencyCapable(configs[j])) { 
        translucencyCapableGC = configs[j]; 
       } 
      } 
     } 
     if (translucencyCapableGC != null) { 
      window = new JWindow(translucencyCapableGC) { 
       @Override 
       public void paint(Graphics g) { 
        if (getWidth() > 4 && getHeight() > 4) { 
         g.clearRect(0, 0, getWidth(), getHeight()); 
         g.setColor(new Color(0x0, 0x0, 0x0, 0xaa)); 
         g.fillRect(0, 0, 1, getHeight()); 
         g.fillRect(0, 0, getWidth(), 1); 
         g.fillRect(0, getHeight() - 1, getWidth(), 1); 
         g.fillRect(getWidth() - 1, 0, 1, getHeight()); 
         g.setColor(new Color(0x0, 0x0, 0x0, 0x10)); 
         g.fillRect(1, 1, getWidth() - 1, getHeight() - 1); 
        } 
       }; 
      }; 
      AWTUtilities.setWindowOpaque(window, false); 
     } 
     else { 
      window = new JWindow(); 
      AWTUtilities.setWindowOpacity(window, 0.5f); 
     } 
    } 
Questions connexes