是否有使用目的:
在下面的代码中添加(新的JScrollPane(列表))而不是添加(列表)?
public class Gui extends JFrame {
private JList list;
private static String[] colorNames = {"black", "blue", "red", "white"};
private static Color[] colors = {Color.BLACK, Color.BLUE, Color.RED, Color.WHITE};
Gui() {
list = new JList(colorNames);
list.setVisibleRowCount(colorNames.length);
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
**add(new JScrollPane(list))**;
}
}
答案 0 :(得分:1)
对原始问题真正客观,答案是:它取决于您希望在UI显示中实现的目标。
但是,在绝大多数情况下,我应该想象在JLists
中包装诸如JScrollPane
之类的组件将是一个好主意。
JScrollPane
存在以帮助特定JComponent
实际上太大而无法放入其指定的空间。使用JList
如果商品数量超过JList
本身的可用高度,那么您将忽略这些商品。包裹在JScrollPane
中将为用户提供滚动机制,通过滚动所有可用项目进行浏览。
当然,如果您的列表没有超出其可用空间,那么将其列入JScrollPane
不会造成任何伤害。 (另外,您可以自定义其显示,以便在必要时不显示滚动条。)
将JScrollPane
与JLists
,JTable
和JTextArea
结合使用尤为常见。不过,不要被JComboBox愚弄 - 它有自己的滚动机制。
官方Swing教程有一个名为How to Use Scroll Panes的部分,它提供了详细信息。
答案 1 :(得分:0)
是的 - 如果列表的内容超出可见窗口,JScrollPane
将毫不奇怪地为您自动添加滚动条。
如果您只添加列表,它将在功能上与相同,除非该区域太小而无法显示完整列表。