Пользовательское отображение фактических полос прокрутки 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);

но это не имеет никакого значения.

Каков предпочтительный способ индивидуального отображения полос прокрутки?


person Toby    schedule 12.08.2013    source источник
comment
невозможно в общем случае: как/если/что именно закрашивается в качестве фона, сильно зависит от LAF, т.е. Metal принимает прозрачное, Win вообще нет. Вы ничего не можете сделать, кроме как попытаться расширить LAF (как уже предложил @mKorbel)   -  person kleopatra    schedule 12.08.2013


Ответы (1)


и прокрутка и текстовая область отображаются как прозрачные (непрозрачные), однако я не могу повлиять на фактические полосы прокрутки. Они по-прежнему отображаются как серый цвет по умолчанию, где я хотел бы изменить их цвет и / или сделать их прозрачными, чтобы они соответствовали остальным.

есть два способа

  • вам нужно будет переопределить BasicScrollBarUI(),

  • без каких-либо комментариев на миллион долларов от @aterai,

  • есть только VerticalScrollBar, вам нужно переопределить и добавить HorizontalScrollBar к ScrollPaneLayout(), который возвращает координаты для Horizontal JScrollBar,

person mKorbel    schedule 12.08.2013
comment
Я изо всех сил пытался узнать больше о переопределении классов пользовательского интерфейса (например, BasicScrollBarUI). Любые указатели на лучшее чтение или не могли бы вы немного расширить ответ? - person Toby; 12.08.2013