因此,出于某种原因,当我将包含JList的JPanel添加到JTabbedPane(在JFrame中)时,JList不会显示。所有其他的东西,如按钮和标签显示,但不是列表
JFrame代码:
public View(Model m, Controller c) {
model = m;
controller = c;
co=getContentPane();
co.setLayout(new BorderLayout());
tabbedPane = new JTabbedPane();
vp = new VragenPanel(model, controller);
cp = new CategoriePanel(model, controller);
tabbedPane.add("Vragen", vp);
tabbedPane.add("Categorie", cp);
co.add(tabbedPane, BorderLayout.NORTH);
this.setSize(400,400);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
JPanel代码:
public CategoriePanel(Model m, Controller c) {
this.setLayout(new BorderLayout());
list = controller.getCategorieList();
this.add(list, BorderLayout.NORTH);
...
b1 = new JButton(etc)...
}
Controller的列表代码(使用defaultlistmodel):
private DefaultListModel dlm=new DefaultListModel();
private JList lijst=new JList(dlm);
...
public JList getCategorieList() {
dlm.ensureCapacity(100);
for(int i=0;i<model.getCategoriën().size();i++) {
dlm.addElement(model.getCategoriën().get(i).getNaam();
}
return lijst;
}
答案 0 :(得分:0)
您必须将JList
放入JScrollPane
(JList
本身不提供滚动功能)。此外,最好设置最小和首选大小。
如果您的小组有一个add(list, BorderLayout.NORTH)
布局管理员(无法通过您发布的代码告知 - 请检查),您只能使用BorderLayout
。
示例:
JList list = controller.getCategorieList();
JScrollPane sp = new JScrollPane(list);
Dimension d = new Dimension(100, 100);
sp.setMinimumSize(d);
sp.setPreferredSize(d);
this.add(list, BorderLayout.NORTH);