2011-12-05 39 views
4

大家好我在java中做了一個swing應用程序,但問題是我如何能夠在java中實現透明框架。在java swing中創建一個透明的JFrame

我想在附加圖像中製作用戶界面設計,但是probem是框架不透明,所以如果該層上沒有組件,它將顯示默認顏色。

像右側我想將此框架作爲透明的頂部自由和底部自由部分,

我用AWTUtilities,但它不是爲我工作。

我怎麼能做到這一點,PLZ回覆,

也給我一個提示通過標題欄

感謝拖動窗口,在未裝飾的窗口提前enter image description here

+0

的可能重複[如何使JFrame的透明?](http://stackoverflow.com/questions/6660908/how-to-make-jframe-transparent) –

+0

我真的真的真的想知道如何你是爲了這個設計而來的,我一直試圖在很長一段時間內找到這種性質的東西,但現在仍然無濟於事,我希望你仍然使用stackoverflow,請告訴我,如果你沒有問題的話。我想知道你是如何設計JFrame的,看起來像這樣,以及你如何定製你的按鈕,Graphics是我每天都在Java上認真思考的原因。 –

回答

3

透明背景分量

public class TransparentBackground extends Jcomponent { 
    private JFrame frame; 
    private Image background; 

public TransparentBackground(JFrame frame) { 
    this.frame = frame; 
    updateBackground(); 
} 

public void updateBackground() { 
    try { 
     Robot rbt = new Robot(); 
     Toolkit tk = Toolkit.getDefaultToolkit(); 
     Dimension dim = tk.getScreenSize(); 
     background = rbt.createScreenCapture(
     new Rectangle(0,0,(int)dim.getWidth(), 
          (int)dim.getHeight())); 
    } catch (Exception ex) { 
     p(ex.toString()); 
     ex.printStackTrace(); 
    } 
} 
public void paintComponent(Graphics g) { 
    Point pos = this.getLocationOnScreen(); 
    Point offset = new Point(-pos.x,-pos.y); 
    g.drawImage(background,offset.x,offset.y,null); 
} 
} 

你可以用一個簡單的main()方法來運行這個方法,將一些組件放到面板上並放到一個框架中:

public static void main(String[] args) { 
    JFrame frame = new JFrame("Transparent Window"); 
    TransparentBackground bg = new TransparentBackground(frame); 
    bg.setLayout(new BorderLayout()); 
    JButton button = new JButton("This is a button"); 
    bg.add("North",button); 
    JLabel label = new JLabel("This is a label"); 
    bg.add("South",label); 
    frame.getContentPane().add("Center",bg); 
    frame.pack(); 
    frame.setSize(150,100); 
    frame.show(); 
} 
+0

不是一個有效的答案,因爲它耗費成本 –

+0

sry但投票 –