2011-06-16 74 views
4

如果我移動JScrollPane,使其位於JPanel的前面並部分覆蓋JPanel,則JScrollPane內部的JEditorPane出現繪畫問題。它沒有適當地重新繪製JPanel的背景。所以當你滾動時你最終會遇到屏幕繪畫問題。 JScrollPane的JPanel的 的內部 - -在JScrollPane中透明JEditorPane在後臺JPanel

我已經使用以下方法 試圖重疊JScrollPane的部分地覆蓋使用FreeLayout(NetBeans的GUI生成器) 的JPanel - JScrollPane的部分覆蓋的JPanel使用的JLayeredPane

JPanel中具有實心背景現在,但只要我有紮實的背景工作,我就會將其擴展爲具有漸變效果。

如何讓JEditorPane從JPanel中引入裁剪後的背景?

我透明使用jEditorPane.setBackground(new Color(0,0,0,0))

它我嘗試使用setOpaque(false)像你這樣的一個小組做製作,但似乎只是如果你把它做的JEditorPane放回默認背景。

原來的問題由同事: https://stackoverflow.com/questions/6364460/jframe-screen-paint-issues-when-using-transparency

原來的問題是不是寫得很好,似乎沒有帶來很好的答案。

迴應同事的問題 建議:

  • 「要通過setOpaque(假);代替的setBackground(新顏色(0,0,0,0));」 沒有解決問題。
  • 「嘗試添加validate()後包()」沒有解決問題。
  • 「上的JViewport繪製背景圖片」是行不通的,因爲 背景需要超出 JScrollView也流傳於其他 組件
  • 「修改的UI委託的paint圖形複合( )「如果這能解決問題,我想知道該怎麼做。
+0

-1,我確定我昨天看到了這個帖子。其他帖子發生了什麼事。人們不喜歡花時間重複已經提出的建議。 – camickr 2011-06-16 17:01:47

+0

看我的編輯。我會從一開始就發佈這些信息,但我想保持簡短的問題。 – 2011-06-16 17:27:46

回答

5

Background Panel類有代碼,試圖使所有組件非透明,所以背景將顯示通過。

編輯:

如果你想用透明背景播放,那麼你可以對這個問題的解釋和解決方案夫婦的檢查Backgrounds With Transparency

在這種情況下,BackgroundPane是更簡單的解決方案。

+0

它不起作用。背景沒有顯示出來,並且在使用'jEditorPane.setBackground(new Color(0,0,0,0))'時仍然出現屏幕繪畫問題。 – 2011-06-16 17:14:09

+0

它適用於我。沒有必要玩透明的背景顏色。該邏輯實際上使3個組件不透明,滾動窗格,視口和編輯器窗格,以便可以正確繪製面板的背景。 – camickr 2011-06-16 18:32:47

+0

你試過滾動嗎?你能顯示你的代碼嗎? – 2011-06-16 19:17:03