首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改JScrollBar拇指大小?

更改JScrollBar拇指大小?
EN

Stack Overflow用户
提问于 2014-03-31 21:23:34
回答 3查看 3.5K关注 0票数 1

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

EN

回答 3

Stack Overflow用户

发布于 2015-02-05 14:20:11

正确使用setVisibleAmount就可以解决这个问题。

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

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

不过,这会破坏默认的体验。

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

票数 1
EN

Stack Overflow用户

发布于 2015-12-04 21:55:48

有点晚了,但有些人可能也需要它。几天前我也遇到了这个问题,所以我检查了JScrollBar类和BasicScrollBarUI

要为thumb设置固定的大小,您需要做的就是在使用/声明任何JScrollBar之前添加以下行

代码语言:javascript
复制
UIManager.put( "ScrollBar.minimumThumbSize", new Dimension( wanted_width, wanted_height ) );  

强迫拇指永远不要低于想要的大小。

ScrollBar.maximumThumbSizeUIManager属性键

票数 1
EN

Stack Overflow用户

发布于 2014-03-31 23:55:53

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

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

代码语言:javascript
复制
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();
            }
        });
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22762715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档