更改JScrollBar拇指大小?

问题描述:

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

+0

请你阅读offcial甲骨文教程如何当你说'“并滚动旋钮/滑块是真的瘦了”',这是一个水平滚动条或垂直使用scrollpanes – mKorbel

+0

一?我问的原因是,当我听到“瘦”的时候,我把它等同于从左到右的宽度。因此,宽水平滚动拇指表示没有太多滚动可用,而细水平拇指表示有很多滚动可用。这恕我直言不应该改变,因为它给用户一个可用的滚动量的视觉指示。如果您指的是垂直滚动滑块/拇指的宽度,那么这就是另一个故事。 – splungebob

+0

对不起,不清楚。我的意思是我有一个这样的滚动条: '([])' 但我想要一个像这样的滚动条: '( [])' –

layout managerlook & feel做这项工作。此示例在框架内容窗格的BorderLayout.SOUTH区域中显示NimbusLookAndFeel滚动条。注意如何pack()导致酒吧采用*面板的宽度和由L & F.

附录中定义的首选高度:滚动条的拇指的实际绘画由ScrollBarUI实施paintThumb()对于给定Look & Feel处理。您可以替换您自己的或使用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://*.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(); 
      } 
     }); 
    } 
} 

正确使用setVisibleAmount会解决这个目的。

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

JScrollBar情况下,visibleAmount的默认值设置为10。拇指的大小正比于比visibleAmount/(maximum - minimum)

虽然这会破坏默认体验。

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

+0

这不提供问题的答案。要批评或要求作者澄清,请在其帖子下方留言。 –

+0

感谢@Alexis的评论。增加了一些更多的解释。 – kujeensiti

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

有一个固定的大小拇指所有你需要做的就是在使用前加入这一行/宣称任何JScrollBar

UIManager.put("ScrollBar.minimumThumbSize", new Dimension(wanted_width, wanted_height)); 

强制拇指永远也不能低于希望的大小。

ScrollBar.maximumThumbSizeUIManager属性键