我的框架上有一个JScrollBar,而不是ScrollFrame,而且滚动条旋钮/滑块真的很薄。我尝试更改滚动条的属性,并尝试制作自定义JScrollBar组件,但我无法找到更改滚动条旋钮大小的方法。任何帮助都非常感谢,谢谢!
发布于 2015-02-05 14:20:11
正确使用setVisibleAmount就可以解决这个问题。
众所周知,拇指的大小表示底层内容的可见量。例如,对于水平滚动条,如果50%的内容可见,则拇指宽度为其轨道宽度的50%。
如果是JScrollBar,则visibleAmount的默认值设置为10。拇指的大小与比率visibleAmount / (maximum - minimum)成正比。
不过,这会破坏默认的体验。
我希望这能回答这个问题。
发布于 2015-12-04 21:55:48
有点晚了,但有些人可能也需要它。几天前我也遇到了这个问题,所以我检查了JScrollBar类和BasicScrollBarUI。
要为thumb设置固定的大小,您需要做的就是在使用/声明任何JScrollBar之前添加以下行
UIManager.put( "ScrollBar.minimumThumbSize", new Dimension( wanted_width, wanted_height ) ); 强迫拇指永远不要低于想要的大小。
ScrollBar.maximumThumbSize是UIManager属性键
发布于 2014-03-31 23:55:53
让layout manager和look & feel来完成这项工作。此示例显示框架内容窗格的BorderLayout.SOUTH区域中的NimbusLookAndFeel滚动条。请注意pack()如何使条采用中心面板的宽度和由L&F定义的首选高度。
附录:滚动条拇指的实际绘制是由给定Look & Feel的paintThumb()的ScrollBarUI实现处理的。您可以替换您自己的或使用third party variation。

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();
}
});
}
}https://stackoverflow.com/questions/22762715
复制相似问题