更改JScrollBar Thumb Size?

时间:2014-03-31 13:23:34

标签: java swing slider jscrollbar

我的框架上有一个JScrollBar,而不是ScrollFrame,滚动条旋钮/滑块非常薄。我尝试更改滚动条的属性,我尝试制作自定义的JScrollBar组件,但我无法找到更改滚动条旋钮大小的方法。非常感谢任何帮助,谢谢!

3 个答案:

答案 0 :(得分:1)

正确使用setVisibleAmount可以解决目的。

众所周知,拇指的大小表示潜在内容的可见数量。例如对于水平滚动条,如果50%的内容可见,则拇指宽度为其轨道宽度的50%。

如果是JScrollBar,则visibleAmount的默认值设置为10.拇指的大小与比率visibleAmount / (maximum - minimum)成比例。

但这会破坏默认体验。

我希望这能回答这个问题。

答案 1 :(得分:0)

layout managerlook & feel完成工作。此示例在框架内容窗格的NimbusLookAndFeel区域中显示BorderLayout.SOUTH滚动条。请注意pack()如何使条形图采用中心面板的宽度和L& F定义的首选高度。

附录:对于给定的Look & Feel,滚动条拇指的实际绘制由ScrollBarUI paintThumb()实现处理。您可以替换自己或使用third party variation

image

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollBar;
import javax.swing.UIManager;

/**
 * @see http://stackoverflow.com/a/22766340/230513
 */
public class Test {

    private void display() {
        JFrame f = new JFrame("Test");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.add(new JPanel() {
            @Override
            public Dimension getPreferredSize() {
                return new Dimension(240, 120);
            }
        });
        f.add(new JScrollBar(JScrollBar.HORIZONTAL), BorderLayout.SOUTH);
        f.pack();
        f.setLocationRelativeTo(null);
        f.setVisible(true);
    }

    public static void main(String[] args) throws Exception {
        UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                new Test().display();
            }
        });
    }
}

答案 2 :(得分:0)

有点晚了,但有些人可能也需要这样做。 我前几天也遇到过这个问题所以我检查了TTL课程和Time To Live

要获得固定大小的拇指,您只需要在使用/声明任何JScrollBar之前添加此行:

BasicScrollBarUI

迫使拇指永远不要低于想要的尺寸。

JScrollBarUIManager.put( "ScrollBar.minimumThumbSize", new Dimension( wanted_width, wanted_height ) ); 属性键