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

时间:2014-05-13 16:03:13

标签: java jscrollpane

是否有使用目的:

在下面的代码中添加(新的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))**;


    }
}

2 个答案:

答案 0 :(得分:1)

对原始问题真正客观,答案是:它取决于您希望在UI显示中实现的目标。

但是,在绝大多数情况下,我应该想象在JLists中包装诸如JScrollPane之类的组件将是一个好主意。

JScrollPane存在以帮助特定JComponent实际上太大而无法放入其指定的空间。使用JList如果商品数量超过JList本身的可用高度,那么您将忽略这些商品。包裹在JScrollPane中将为用户提供滚动机制,通过滚动所有可用项目进行浏览。

当然,如果您的列表没有超出其可用空间,那么将其列入JScrollPane不会造成任何伤害。 (另外,您可以自定义其显示,以便在必要时不显示滚动条。)

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

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

答案 1 :(得分:0)

是的 - 如果列表的内容超出可见窗口,JScrollPane将毫不奇怪地为您自动添加滚动条。

如果您只添加列表,它将在功能上与相同,除非该区域太小而无法显示完整列表