我正在尝试在java中创建一个GUI,其中包含JComboBox和JList,其内容根据JComboBox中的所选项目而变化。
我想向 JList 添加一个 scroolPane。我将向您展示代码和图像来澄清问题:
JPanel listPanel = new JPanel();
Hashtable<String, String[]> subItems = new Hashtable<String, String[]>();
JComboBox<String> tendina;
JList<String> subList;
GridBagConstraints c;
String ricevuti[] = {"Alex", "Ben", "Claire", "Dana", "Ellen", "Felicia", "Gary", "Hailey", "Imogen", "Jay", "Kate", "Alex", "Ben", "Claire", "Dana", "Ellen", "Felicia", "Gary", "Hailey", "Imogen", "Jay", "Kate"};
JList ricList = new JList(ricevuti);
String inviati[] = {"Lara", "Megan", "Nikole", "Oscar", "Paige", "Quentin", "Ralph", "Sara", "Thelma", "Victoria", "William"};
JList invList = new JList(inviati);
String ricInv[] = {"Seleziona un item..", "Ricevuti", "Inviati"};
Inbox() {
//...
listPanel.setLayout(new GridBagLayout());
listPanel.setBackground(Color.BLUE);
/*** ComboBox ***/
tendina = new JComboBox<String>(ricInv);
tendina.addActionListener(this);
tendina.setEditable(false);
c = new GridBagConstraints();
c.fill = GridBagConstraints.HORIZONTAL;
c.gridwidth = 1;
c.gridx = 0;
c.gridy = 0;
c.insets = new Insets(-295, 10, 0, 0); //top, left, bottom, right
c.weightx = 1;
listPanel.add(tendina, c);
/*** Lista ***/
subList = new JList<String>();
subList.setPreferredSize(new Dimension(80, 280));
subList.setVisibleRowCount(10);
subList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
JScrollPane scrollList = new JScrollPane(subList);
subItems.put(ricInv[1], ricevuti);
subItems.put(ricInv[2], inviati);
c = new GridBagConstraints();
c.fill = GridBagConstraints.HORIZONTAL;
c.gridwidth = 1;
c.gridx = 0;
c.gridy = 0;
c.insets = new Insets(30, 10, 0, 0); //top, left, bottom, right
c.weightx = 1;
**[1]**listPanel.add(subList, c);
**[2]**listPanel.add(scrollList, c);
//...
}
问题是当我将scrollList[2]添加到listPanel时,布局困惑了。 如果我将子列表[1]添加到listPanel,那么布局是正确的,但显然我没有scrollList。
如何在不更改布局的情况下添加滚动列表?
如果我将 subList 添加到 listPanel[1],就会发生以下情况: http://www.mediafire.com/view/daye4rkx1tyhwbq/sublist.png
如果我将scrollList添加到listPanel[2],就会发生以下情况: http://www.mediafire.com/view/jfiky6j686e2h58/scroll.png
谢谢
<小时/>关于高度,我意识到问题取决于subList.setVisibleRowCount(16);
。
但是如何调整宽度呢?
最佳答案
这不是我在上一篇文章中给您的建议:http://docs.oracle.com/javase/tutorial/uiswing/events/documentlistener.html
包含 JList 的 JScrollPane 应从一开始就使用您所需的布局添加到您的 GUI 中。
然后您只需使用 setModel(...)
方法更改 JList 中的数据即可。
关于java - 将 JScrollList 更改为 JList 的布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23585903/