我需要實現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 –