我要設計這個滾動條爲我所有scrollpanes:定製設計JScollPane的Java Swing
用的Java Swing。我正在使用Netbeans IDE。什麼是最簡單的解決方案?
非常感謝。
問候
我要設計這個滾動條爲我所有scrollpanes:定製設計JScollPane的Java Swing
用的Java Swing。我正在使用Netbeans IDE。什麼是最簡單的解決方案?
非常感謝。
問候
您可以通過定製Swing組件的外觀設置自定義UI。在滾動窗格中的滾動條的情況下,你做
scrollPane.getVerticalScrollBar().setUI(new MyScrollBarUI());
其中MyScrollBarUI
從javax.swing.plaf.basic.BasicScrollBarUI
的。要爲所有滾動條做到這一點(不僅僅在JScrollPane
情況下),調用
UIManager.put("ScrollBarUI", "my.package.MyScrollBarUI");
創建任何Swing組件之前。
在MyScrollBarUI
,重寫以下方法:
public class MyScrollBarUI extends BasicScrollBarUI {
@Override
protected void paintTrack(Graphics g, JComponent c, Rectangle trackBounds) {
// your code
}
@Override
protected void paintThumb(Graphics g, JComponent c, Rectangle thumbBounds) {
// your code
}
}
你的滾動條是圖形非常簡單,所以它應該不會太難實現。
偉大的回答非常感謝你 –
一定要重寫'保護無效[BasicScrollBarUI](http://docs.oracle.com/javase/6/docs/api/javax/swing/plaf/)中的paintTrack(Graphics g,JComponent c,Rectangle trackBounds)'和'paintThumb'(相同的方法簽名) basic/BasicScrollBarUI.html),否則你可能看不到任何東西。 – Nateowami
是否有可能不硬編碼擴展BasicScrollBarUI,而是擴展當前使用的滾動條UI類?像'extends scrollBar.getUI()。getClass()'? – Bowi
1)覆蓋JToolBar
2)大部分Custom Look and Feel推翻該
工具欄,以滾動的關係是... ;-)加(畢竟這是週一上午):你重寫方法,類擴展(或執行) – kleopatra
不要忘記,如果你打算使用UIManager的覆蓋這樣
UIManager.put("ScrollBarUI", "my.custom.SimpleScrollBarUI");
那麼你SimpleScrollBarUI類的所有滾動條必須有createUI中的方法,即:
public class SimpleScrollBarUI extends BasicScrollBarUI {
public static ComponentUI createUI(JComponent c) {
return new SimpleScrollBarUI();
}
//...
}
我沒有得到你。當它包含的元素大小受到損害時,滾動窗格會自動插入滾動條。 – gprathour