【发布时间】:2015-03-26 14:14:28
【问题描述】:
我使用 windowbuilder 创建了一个应该是联系人列表的 GUI。有两个列表:一个是联系人,另一个是号码。当您选择一个联系人时,他的号码将出现。 但是,当我添加很多联系人时,滚动条不会像我的朋友那样自动出现,所以我尝试添加一个 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);
然后我也尝试将边界添加到滚动面板:
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”是不必要的。此外,边界应该应用于滚动窗格,而不是列表。最后,我不应该在面板中使用 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);
我正在更新以防有人遇到类似问题。
【问题讨论】:
-
尝试设置此属性
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);并且在添加 ScrollPane 时也无需添加联系人列表 -
I removed everything that was not interesting for the question,按钮与问题无关。标签与问题无关。你没有听过给出的建议:1)你不需要使用“scrollbar_always”,2)你不应该使用 setBounds(),3)你应该使用布局管理器。修复这些问题,然后在论坛中发布代码,而不是在 Dropbox 上。您第一次可以发布代码,所以第二次再弄明白。 -
感谢您的帮助,请您不要那么粗鲁。我没有时间进行您建议的更改,Yoda 询问了我发布的完整代码,并且“不感兴趣”是指向其他类的所有链接,因为所有功能/按钮都已实现。现在是凌晨 3 点 AU,所以我不会在这里度过余下的夜晚,为每条线路添加 4 个空格,这样它就可以工作了。如果我在帮助某人,我不介意点击禁止下载链接。因此,再次感谢您的建议,我会在醒来后尽快实施,但请不要对这个社区无礼。
-
我的评论更有力,因为您显然忽略了我在回答中提出的每一个建议。当有人提出建议时,您应该花时间阅读和理解这些建议,而不是忽略它们。作为论坛的新手,从您获得的建议中学习并花更多时间修复代码,而不是发布不必要的 cmets。我给你的建议是社区的指导方针。顺便说一句,你所在的时间无关紧要。如果您希望我们阅读代码,那么代码应该具有正确的格式和可读性,就像在您的计算机上一样。
-
@LauraMartins 作为社区成员,您应该“接受”有助于解决问题的答案(通过单击答案旁边的复选标记),以便社区的其他成员知道问题所在已解决。我注意到您也没有“接受”您其他问题的答案。
标签: java swing jscrollpane jlist windowbuilder