使用的目的是:
add(new JScrollPane(list)) 而不是下面代码中的 add(list)?
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))**;
}
}
最佳答案
真正客观地回答您最初的问题,答案是:这取决于您希望在 UI 显示中实现的目标。
但是,在绝大多数情况下,我应该认为将诸如 JLists
之类的组件包装在 JScrollPane
中将是一个好主意。
JScrollPane
的存在是为了在特定的 JComponent
太大而无法容纳其分配的空间时提供帮助。对于 JList
,如果项目数量超过 JList
本身的可用高度,那么您将看不到这些项目。封装在 JScrollPane
中将为用户提供滚动机制,通过滚动所有可用项目来进行浏览。
当然,如果您的列表没有超出其可用空间,那么将其放在 JScrollPane
中也不会造成任何损害。 (此外,您还可以自定义其显示,以便在必要时才显示滚动条。)
将 JScrollPane
与 JLists
、JTable
和 JTextArea
结合使用尤其常见。不过,不要被 JComboBox 愚弄 - 它有自己的滚动机制。
官方 Swing 教程中有一个名为 How to Use Scroll Panes 的部分。其中提供了详细信息。
关于java - 为什么我要在这个例子中使用 JScrollPane ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23636221/