我目前正在爲大學課程開展一個小組項目,而且我碰到了一個絆腳石。我們決定實施的程序是一個對等聊天客戶端,它具有用於存儲和共享用戶名的中央服務器等。我已被分配到GUI中。Java Swing - 造成僞影的半透明組件
一位朋友開玩笑地建議我包含「火紅的背景!」所以我決定這樣做,但要有一個用戶選擇的背景圖像。因爲只有背景圖像的零碎片段會在所有組件上方可見,所以我決定嘗試實現半透明。
這是我的問題在於:
發送時從輸入框信息,聊天窗口,或瀏覽好友列表時,或滾動聊天窗口,奇怪的文物留在後面。這些工件有時是發送按鈕的半透明「鬼魂」,有時是菜單的一部分,或者是舊文本。它看起來像整個框架沒有得到適當的重繪,但我不確定它是如何工作的。
對於實現JTextComponent的組件,我將它們的選擇顏色設置爲半透明顏色。對於其他組件,我將背景設置爲半透明。我有一個函數,setTranslucency(Component com)查看組件,根據它是什麼設置它的半透明性,然後查看它是否是某種類型的容器,並遞歸地設置每個項目的半透明度。
現在,我發現解決此問題的方法是將窗口拖出視線(例如將窗口最小化或拖動到屏幕外並將其拖回)。
所以,
1)是否有辦法迫使整個窗口更新喜歡它,當我將其拖離屏幕或最小化呢?
,或者
2)我是不是做錯了擺在首位?如果是這樣,我該如何解決它?
下面是參考一個圖:
http://i.stack.imgur.com/4J9GJ.png
好的,我在這裏接受了你的建議,並決定我的setTranslucency(..)函數將事情設置爲透明,而不調用setOpaque(..)使它們正確重繪。在手動設置組件時,它們顯示爲半透明且不透明,並且正確更新。 這只是我粗心的貫穿框架中的組件,它們將它們設置爲半透明而不設置它們的不透明度。 感謝您的幫助! – 2011-02-13 00:37:38