【发布时间】:2011-03-13 12:16:42
【问题描述】:
我有一个 JComboBox,每次从 JComboBox 中选择不同的元素时,我都想在 JScrollPane 中加载不同的内容。内容由不同数量的 JLabel 和 JTextField 组成。
我做了什么:
JScrollPane scrollPane;
JComboBox combo;
JPanel back = new JPanel(new BorderLayout());
combo = new JComboBox({ "Bird", "Cat", "Dog", "Rabbit", "Pig" });
combo.addActionListener(new AnimalLoader());
scrollPane = showPanel((String) combo.getSelectedItem());
back.add(combo, BorderLayout.NORTH);
back.add(scrollPane, BorderLayout.SOUTH);
back.setVisible(true);
protected JScrollPane showPanel(String name)
{
JPanel contentPanel = new JPanel(new JLabel(name));
scrollPane = new JScrollPane(contentPanel);
return scrollPane;
}
private class AnimalLoader implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
JComboBox cb = (JComboBox) e.getSource();
String selected = (String) cb.getSelectedItem();
scrollPane = showPanel(selected);
}
}
当我选择另一个项目时,我没有设法重新加载不同的 JScrollPane。 仅加载属于 JComboBox 的第一项(默认项)的 JScrollPane。
请对我做错了什么有任何想法?
【问题讨论】:
-
为了尽快获得更好的帮助,请发布 SSCCE (pscode.org/sscce.html)。