【问题标题】:Custom display of JScrollPane's actual scroll bars (make transparent)JScrollPane 的实际滚动条的自定义显示(使透明)
【发布时间】:2013-08-12 07:54:39
【问题描述】:

我有一个带有 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);

但它没有任何区别。

自定义显示滚动条的首选方式是什么?

【问题讨论】:

  • 在一般情况下不可能:如何/如果/究竟是什么被绘制为背景高度依赖 LAF,f.i. Metal 接受透明,Win 完全不接受。除了尝试扩展 LAF(正如 @mKorbel 已经建议的那样)之外,您无能为力

标签: java swing jscrollpane alpha-transparency jscrollbar


【解决方案1】:

并且滚动和文本区域显示为透明(非透明), 但是,我似乎无法影响实际的滚动条。他们仍然 显示为默认灰色,我想更改其颜色 和/或使它们透明以匹配其余部分。

有两种方法

  • 你需要覆盖BasicScrollBarUI()

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

  • 只有VerticalScrollBar,您需要覆盖并添加HorizontalScrollBar,以返回Horizontal JScrollBar的协调ScrollPaneLayout()

【讨论】:

  • 我一直在努力寻找更多关于覆盖 UI 类(如 BasicScrollBarUI)的信息。有什么更好的阅读建议吗?或者您可以稍微扩展一下答案吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多