我有一个问题,只在Nimbus L&F上发生。如果JList中的项目太多,JScrollBar的拇指将会消失。但在Metal L&F中,拇指始终可见,因为它有一个最小大小。我还检查了Nimbus L&F中的逻辑,确实有相同的最小大小。但它没有产生影响。
请参见下面的代码:
当我设置"f.setSize(300, 300);"时,拇指会消失。 但是如果我设置 "f.setSize(300, 400);",拇指将可见。 如何始终显示拇指?
请参见下面的代码:
public static void main(String[] args) {
for (UIManager.LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
try {
UIManager.setLookAndFeel(info.getClassName());
} catch (ClassNotFoundException ex) {
Logger.getLogger(Demo.class.getName()).log(Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
Logger.getLogger(Demo.class.getName()).log(Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
Logger.getLogger(Demo.class.getName()).log(Level.SEVERE, null, ex);
} catch (UnsupportedLookAndFeelException ex) {
Logger.getLogger(Demo.class.getName()).log(Level.SEVERE, null, ex);
}
break;
}
}
JFrame f = new JFrame("Metal (height 300)");
String[] ss = new String[100];
for (int i = 0; i < ss.length; i++) {
ss[i] = "" + i;
}
JList<String> l = new JList<String>();
l.setListData(ss);
final JScrollPane jScrollPane = new JScrollPane(l);
f.getContentPane().add(jScrollPane);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(300, 300);
f.setVisible(true);
}
当我设置"f.setSize(300, 300);"时,拇指会消失。 但是如果我设置 "f.setSize(300, 400);",拇指将可见。 如何始终显示拇指?