Custom design JScollPane Java Swing
Asked Answered
L

3

14

I need to design this scrollbar for all my scrollpanes :

enter image description here

With Java Swing. I am using Netbeans IDE. What is the simplest solution ?

Thank you very much.

Regards

Lockup answered 21/11, 2011 at 7:27 Comment(1)
i did not get you. a scrollpane automatically inserts a scroll bar when size of element it contains is compromised.Moreen
E
20

You can customize the look of a Swing component by setting a custom UI. In the case of a scroll pane's scroll bar, you do

scrollPane.getVerticalScrollBar().setUI(new MyScrollBarUI());

where MyScrollBarUI is derived from javax.swing.plaf.basic.BasicScrollBarUI. To do this for all scroll bars (not only in JScrollPane instances), call

UIManager.put("ScrollBarUI", "my.package.MyScrollBarUI");

before you create any Swing components.

In MyScrollBarUI, you override the following methods:

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
    }
}

Your scroll bar is graphically very simple, so it should not be too hard to implement.

Eat answered 21/11, 2011 at 9:51 Comment(3)
Be sure to override protected void paintTrack(Graphics g, JComponent c, Rectangle trackBounds) and paintThumb (same method signature) in BasicScrollBarUI or you might not see anything.Daciadacie
Would it be possible not to hardcode extends BasicScrollBarUI but to extend the scrollbar UI class that is currently used? Like extends scrollBar.getUI().getClass()?Discriminator
No that is not possible with inheritance on the JVMEat
S
1

1) override JToolBar

2) most of Custom Look and Feel overrode that

Staub answered 21/11, 2011 at 7:49 Comment(1)
the relation of toolbar to scrollbar is that ... ;-) Plus (after all it's Monday morning): you override methods, classes are extended (or implemented)View
A
1

Don't forget that if you plan to use the UIManager to override all scrollbars like this

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

then your SimpleScrollBarUI class must have the createUI method, i.e:

public class SimpleScrollBarUI extends BasicScrollBarUI {

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

    //...

}
Autotrophic answered 16/2, 2016 at 23:13 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.