2013-08-12 49 views
1

我有一個文本區域與JScrollPane和剪裁與顯示的東西;JScrollPane的實際滾動條的自定義顯示(使透明)

JTextArea text = new JTextArea(); 
    text.setOpaque(false); 
    text.setFont(...); 
    text.setForeground(Color.white); 
    text.setBackground(Color.black); 
    JScrollPane scroll = new JScrollPane(text); 
    scroll.setOpaque(false); 
    scroll.getViewport().setOpaque(false); 

和滾動和文本區域被示出作爲透明(非不透明)然而,我似乎能夠不影響實際滾動條。 它們仍然顯示爲默認灰色,我想要改變它們的顏色和/或使它們透明以匹配其他顏色。

我試過的東西

 scroll.setBackground(Color.black); 
    scroll.getVerticalScrollBar().setOpaque(false); 

,但它並沒有任何區別。

對滾動條進行自定義顯示的首選方式是什麼?

+0

在一般情況下不可能:如何/如果/究竟是什麼被繪成背景是高度LAF依賴,f.i.金屬接受透明,Win完全沒有。沒有什麼可以做的,只是試圖擴展LAF(就像@mKorbel已經提出的那樣) – kleopatra

回答

1

和滾動和文本區域被示出作爲透明(非不透明), 然而,我似乎無法影響實際滾動條。他們仍然 顯示爲默認的灰色,我想要改變它們的顏色 和/或使它們透明以匹配其他顏色。

有兩種方式

  • 你需要重寫BasicScrollBarUI()

  • 沒有任何commnets milion dollars baby by @aterai

  • VerticalScrollBar只是,你需要重寫,並添加HorizontalScrollBar ,至ScrollPaneLayout()返回協調爲Horizontal JScrollBar,

+0

我一直在努力尋找更多關於覆蓋UI類的知識(比如BasicScrollBarUI)。任何指向更好的閱讀的指針,或者你可以擴大答案一點? – Toby