我使用 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/