2013-02-18 9 views
13

मैं JFrame पारदर्शी बनाना चाहता हूं, लेकिन इसके शीर्ष पर छवि गैर-पारदर्शी होने के लिए है।पारदर्शी जेएफआरएम कैसे बनाएं लेकिन बाकी सबकुछ समान रखें?

enter image description here

किसी को भी केवल JFrame पारदर्शी बनाने के लिए एक तरह से पता है: यह है कि मैं क्या अब है?

import javax.swing.*; 
import java.awt.*; 
import com.sun.awt.AWTUtilities; 
import static java.awt.GraphicsDevice.WindowTranslucency.*; 

public class SplashDemo extends JFrame 
{ 
    public SplashDemo() 
    { 
     setUndecorated(true); 
     setSize(200, 200); 

     add(new JLabel(new ImageIcon("puppy2.png"))); 
     setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
     setVisible(true); 

     setOpacity(0.85f);  
    } 

    public static void main(String[] args) 
    { 
     new SplashDemo(); 
    } 
} 
+1

फ्रेम पारदर्शी बनाओ। सामग्री फलक पारदर्शी होने दें और सामग्री अपारदर्शी होने के लिए – MadProgrammer

उत्तर

26

मूल रूप से, आप एक पारदर्शी खिड़की और एक पारदर्शी सामग्री फलक बनाने की जरूरत है:

यहाँ मेरी कोड है। इसका मतलब यह होगा कुछ भी सामग्री फलक को जोड़ा गया अतिरिक्त alphering बिना प्रदान करने के लिए जारी रहेगा ...

enter image description here

public class TranscluentWindow { 

    public static void main(String[] args) { 
     new TranscluentWindow(); 
    } 

    public TranscluentWindow() { 
     EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        try { 
         UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
        } catch (Exception ex) { 
        } 

        JWindow frame = new JWindow(); 
        frame.setAlwaysOnTop(true); 
        frame.addMouseListener(new MouseAdapter() { 
         @Override 
         public void mouseClicked(MouseEvent e) { 
          if (e.getClickCount() == 2) { 
           SwingUtilities.getWindowAncestor(e.getComponent()).dispose(); 
          } 
         } 
        }); 
        frame.setBackground(new Color(0,0,0,0)); 
        frame.setContentPane(new TranslucentPane()); 
        frame.add(new JLabel(new ImageIcon(ImageIO.read(getClass().getResource("/Puppy.png"))))); 
        frame.pack(); 
        frame.setLocationRelativeTo(null); 
        frame.setVisible(true); 
       } catch (IOException ex) { 
        ex.printStackTrace(); 
       } 

      } 
     }); 
    } 

    public class TranslucentPane extends JPanel { 

     public TranslucentPane() { 
      setOpaque(false); 
     } 

     @Override 
     protected void paintComponent(Graphics g) { 
      super.paintComponent(g); 

      Graphics2D g2d = (Graphics2D) g.create(); 
      g2d.setComposite(AlphaComposite.SrcOver.derive(0.85f)); 
      g2d.setColor(getBackground()); 
      g2d.fillRect(0, 0, getWidth(), getHeight()); 

     } 

    } 

} 
+1

वाह आपकी सहायता के लिए बहुत बहुत धन्यवाद। क्या वह बहुत काम था? ऐसा लगता है जैसे आपने अनुसंधान करने में बहुत समय बिताया ओओ। – r1nzler

+3

नहीं - इस तरह की चीजें हर समय करें;) – MadProgrammer

+2

+1, ठंडा। जेडीके 7 के साथ ज्यादा नहीं खेला है। मुझे एहसास नहीं हुआ कि शीर्ष स्तर की खिड़की पारदर्शी बनाना इतना आसान था। ऐसा लगता है कि आपको बस एक ट्रान्सेंट पृष्ठभूमि रंग का उपयोग करना है। – camickr

संबंधित मुद्दे