java - 我的 Jlists 没有发生滚动

标签 java swing jscrollpane jlist windowbuilder

我使用 windowbuilder 创建了一个 GUI,它应该是一个联系人列表。有两个列表:一个是联系人列表,另一个是号码列表。当您选择联系人时,他的号码就会出现。 但是,当我添加大量联系人时,滚动条不会像我的 friend 那样自动出现,所以我尝试添加一个 JScrollPane。还是不行。

事情是这样的:

    DefaultListModel contact = new DefaultListModel();  
    JList contacts = new JList(contact);
    contacts.setBounds(22, 64, 186, 135);

    contentPane.add(contacts);

这是我尝试过的:

    DefaultListModel contact = new DefaultListModel();  
    JList contacts = new JList(contact);
    contacts.setBounds(22, 64, 186, 135);
    JScrollPane scrollPane1 = new JScrollPane(contacts);


    contentPane.add(contacts);
    contentPane.add(scrollPane1, BorderLayout.WEST);

然后我也尝试将 Bounds 添加到滚动面板:

    DefaultListModel contact = new DefaultListModel();  
    JList contacts = new JList(contact);
    contacts.setBounds(22, 64, 186, 135);
    JScrollPane scrollPane1 = new JScrollPane(contacts);
    scrollPane1.setBounds(22, 64, 186, 135);


    contentPane.add(contacts);
    contentPane.add(scrollPane1, BorderLayout.WEST);

当我删除“contacts.setBounds(22, 64, 186, 135);”时,该列表停止工作。

我也尝试过没有最后一行,我尝试过只包含最后一行而不包含倒数第二行,我尝试添加“scrollPane1.setViewportView(contacts);”,我尝试去掉“BorderLayout.WEST”所有其他尝试的论点,所以我基本上尝试了我在互联网上找到的“解决方案”的所有组合

我不知道发生了什么,也不知道如何解决它。我想要的只是能够通过滚动查看我的所有联系人。

编辑,已解决:

问题是我的面板被声明为 contentPane.setLayout(null);因此“BorderLayout.WEST”是不必要的。此外,边界应该应用于滚动 Pane ,而不是列表。最后,我不应该在面板中使用 add(contacts) 。解决方案是:

    DefaultListModel contact = new DefaultListModel();  
    JList contacts = new JList(contact);        
    JScrollPane scrollPaneContact = new JScrollPane(contacts);
    scrollPaneContact.setBounds(22, 64, 186, 135);
    contentPane.add(scrollPaneContact);

我正在更新,以防有人遇到类似问题。

最佳答案

您需要使用正确的构造函数为 JScrollPane 设置策略。

JScrollPane(Component view, int vsbPolicy, int hsbPolicy) Creates a JScrollPane that displays the view component in a viewport whose view position can be controlled with a pair of scrollbars.

例如:

   new JScrollPane(COMPONENT, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

编辑:

 DefaultListModel model = new DefaultListModel();  
    JList contactsList = new JList(model);
    JScrollPane scrollPane1 = new JScrollPane(contactsList, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);

关于java - 我的 Jlists 没有发生滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29280743/

相关文章:

java - 如何让JScrollPane不隐藏JTable?

java - 联系人列表 Swing

java - 面向对象的数据库

java - 使用 FileUtil API 在同一个 hdfs 中复制文件需要太多时间

java - 处理发生时动态刷新 JTextArea?

java - 扩展 JScrollPane 以在其中包含文本区域

java - eclipse 不验证 struts.xml 文件

java - 运行rjava时如何处理 "Java Heap Space"错误

java - 使用 JFileChooser 读取文件名

java - 如何时刻维护后面的主JFrame?