我的框架上有一个JScrollBar,而不是ScrollFrame,滚动条旋钮/滑块非常薄。我尝试更改滚动条的属性,我尝试制作自定义的JScrollBar组件,但我无法找到更改滚动条旋钮大小的方法。非常感谢任何帮助,谢谢!
答案 0 :(得分:1)
正确使用setVisibleAmount
可以解决目的。
众所周知,拇指的大小表示潜在内容的可见数量。例如对于水平滚动条,如果50%的内容可见,则拇指宽度为其轨道宽度的50%。
如果是JScrollBar
,则visibleAmount
的默认值设置为10.拇指的大小与比率visibleAmount / (maximum - minimum)
成比例。
但这会破坏默认体验。
我希望这能回答这个问题。
答案 1 :(得分:0)
让layout manager和look & feel完成工作。此示例在框架内容窗格的NimbusLookAndFeel
区域中显示BorderLayout.SOUTH
滚动条。请注意pack()
如何使条形图采用中心面板的宽度和L& F定义的首选高度。
附录:对于给定的Look & Feel,滚动条拇指的实际绘制由ScrollBarUI
paintThumb()
实现处理。您可以替换自己或使用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();
}
});
}
}
答案 2 :(得分:0)
有点晚了,但有些人可能也需要这样做。
我前几天也遇到过这个问题所以我检查了TTL
课程和Time To Live
。
要获得固定大小的拇指,您只需要在使用/声明任何JScrollBar
之前添加此行:
BasicScrollBarUI
迫使拇指永远不要低于想要的尺寸。
JScrollBar
是UIManager.put( "ScrollBar.minimumThumbSize", new Dimension( wanted_width, wanted_height ) );
属性键