java - 为什么我要在这个例子中使用 JScrollPane ?

标签 java jscrollpane

使用的目的是:

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 中也不会造成任何损害。 (此外,您还可以自定义其显示,以便在必要时才显示滚动条。)

JScrollPaneJListsJTableJTextArea 结合使用尤其常见。不过,不要被 JComboBox 愚弄 - 它有自己的滚动机制。

官方 Swing 教程中有一个名为 How to Use Scroll Panes 的部分。其中提供了详细信息。

关于java - 为什么我要在这个例子中使用 JScrollPane ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23636221/

相关文章:

java - 如何更新firebase数据库特定键中的值

java - 连接被拒绝 : connect 的解决方法是什么

存储多个字符串时出现 Java NullPointerException

java - 更改 JComboBox 的内部弹出窗口 (JList) 的边框颜色

java - 如何查看Pocketsphinx词典中是否存在该单词?

java - 使用 Intent 返回上一页而不是进入上一页...

java - JScrollPane.setviewportview 与 JScrollPane.add 之间的区别

java - 在jsplitpane中的jscrollpane中调整 Canvas 大小问题

java - 如何将 jTextArea 设置为具有与其包含的文本大小匹配的高度(以避免滚动条)

java - 如何强制 JScrollPane 仅垂直滚动?