【发布时间】:2012-01-02 18:09:59
【问题描述】:
我需要为我所有的滚动窗格设计这个滚动条:
使用 Java Swing。我正在使用 Netbeans IDE。什么是最简单的解决方案?
非常感谢。
问候
【问题讨论】:
-
我没有得到你。滚动窗格在其包含的元素大小受到影响时会自动插入滚动条。
标签: java swing scrollbar customization scrollpane
我需要为我所有的滚动窗格设计这个滚动条:
使用 Java Swing。我正在使用 Netbeans IDE。什么是最简单的解决方案?
非常感谢。
问候
【问题讨论】:
标签: java swing scrollbar customization scrollpane
您可以通过设置自定义 UI 来自定义 Swing 组件的外观。对于滚动窗格的滚动条,您可以这样做
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
}
}
您的滚动条在图形上非常简单,因此实现起来应该不会太难。
【讨论】:
protected void paintTrack(Graphics g, JComponent c, Rectangle trackBounds) 和paintThumb(相同的方法签名),否则您可能什么也看不到。
extends BasicScrollBarUI,而是扩展当前使用的滚动条 UI 类?喜欢extends scrollBar.getUI().getClass()?
1) 覆盖JToolBar
2) 大多数Custom Look and Feel 覆盖了它
【讨论】:
不要忘记,如果你打算像这样使用 UIManager 来覆盖所有滚动条
UIManager.put("ScrollBarUI", "my.custom.SimpleScrollBarUI");
那么您的 SimpleScrollBarUI 类必须具有 createUI 方法,即:
public class SimpleScrollBarUI extends BasicScrollBarUI {
public static ComponentUI createUI(JComponent c) {
return new SimpleScrollBarUI();
}
//...
}
【讨论】: