Пользовательский дизайн JScollPane Java Swing

Мне нужно создать эту полосу прокрутки для всех моих scrollpanes:

enter image description here

С Java Swing. Я использую Netbeans IDE. Какое самое простое решение?

Большое спасибо.

Привет

Ответ 1

Вы можете настроить внешний вид компонента 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
    }
}

Ваша полоса прокрутки графически очень проста, поэтому ее не следует выполнять слишком сложно.

Ответ 3

Не забывайте, что если вы планируете использовать UIManager для переопределения всех полос прокрутки, таких как

UIManager.put("ScrollBarUI", "my.custom.SimpleScrollBarUI");

то ваш класс SimpleScrollBarUI должен иметь метод createUI, т.е.

public class SimpleScrollBarUI extends BasicScrollBarUI {

    public static ComponentUI createUI(JComponent c) {
        return new SimpleScrollBarUI();
    }

    //...

}