2012-01-18 34 views
2

我的滾動窗格有透明度/滾動問題。據我所知,文檔沒有解決這種行爲。JViewport.BACKINGSTORE_SCROLL_MODE和setOpaque(false)

這裏是我的透明文本窗格代碼:

textArea.setOpaque(false); 
    scrollPane.setViewportView(textArea); 
    scrollPane.setViewportBorder(border); 
    scrollPane.setOpaque(false); 
    //scrollPane.getViewport().setScrollMode(JViewport.BACKINGSTORE_SCROLL_MODE); 
    scrollPane.getViewport().setOpaque(false); 

這工作得很好,除了滾動很不景氣。當setScrollMode行被取消註釋時,滾動更具響應性,但透明度丟失。

有什麼辦法可以進入雙贏局面嗎?

編輯:好的,原來的問題沒有真正的答案,但我確實發現原因實際上是一個電話javax.swing.UIManager.put("TabbedPane.font", someCustomFont)。我忽略了這個細節,因爲我認爲這是無關緊要的。誰會想到。我不知道爲什麼會導致滾動緩慢,但我很高興找到了問題。

回答

2

1)JViewport是默認traslucent/transparent

2)所需的設定如下方法JViewpot

JViewport.setScrollMode(JViewport.BLIT_SCROLL_MODE); 
JViewport.setScrollMode(JViewport.BACKINGSTORE_SCROLL_MODE); 
JViewport.setScrollMode(JViewport.SIMPLE_SCROLL_MODE); 

3)簡單的例子here,沒有任何freeeze或滾動

+0

1)中跳躍不是從我的發現?如果我不調用'scrollPane.getViewport()。setOpaque(false)',整個事情就搞砸了? 2/3)不會立即調用所有三個只會導致最後一個被調用? – Whired 2012-01-18 19:00:05

+0

重要的是,有什麼對象你放到JViewport或JTextArea, – mKorbel 2012-01-18 19:35:00

+0

+1另請參見['ScrollPanePaint'](http://stackoverflow.com/a/3518047/230513)。 – trashgod 2012-01-18 19:41:40