我需要实现ui的联系人列表,如在Skype中。由来自JPanel的自定义类(JContact)表示的联系人。我试图使用不同的布局,但没有收到预期的结果。主框架具有下一个结构。联系人列表swing
的JFrame - >的JPanel(contactsPanel) - > JScrollPane的(scrollContacts) - >的JPanel(contactPanel)
scrollContacts.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); scrollContacts.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
如果使用的FlowLayout为contactPanel(见的FlowLayout图像)
奇怪的行为,我认为,因为预期的每个联系人将一个一个下,因为指示HORIZONTAL_SCROLLBAR_NEVER为scrollContacts。
如果使用Grid或Box布局。布局自动重新调整我的面板的大小,它看起来非常难看。请参阅Grid & Box layouts图像。
预期结果看到“预期”的形象
我不是母语的人,所以请对不起,是我不好English.Thank您的关注!
好的。感谢名单。我这样做: 'public void refreshContactsList(Set contacts){ contactPanel.removeAll(); Box contactsBox = Box.createVerticalBox(); (联系人联系人){ JContact jContact = new JContact(mediator,contact); contactsBox.add(jContact); contactsBox.add(Box.createVerticalGlue());} contactPanel.add(contactsBox); contactPanel.revalidate(); contactPanel.repaint();}' 但是得到了与网格布局相同的结果。 –
dmgcodevil
您在每次联系后添加胶水。你应该只在最后一个之后添加胶水。 –
另一个问题是您可能没有定义JContact组件的最大高度。这是一个工作示例:https://gist.github.com/4240355 –