JList突然改变

时间:2013-01-08 22:48:00

标签: java swing jlist gridbaglayout

在下图中,底部JComponentJList中的JScrollPane(列表)。 默认情况下,可见行的数量是8或10,我不知道。 但突然间,当我对项目进行更多更改时,它发生了变化 对此,现在我一次只能看到一个项目(fsgisfg)。 如何更改一次显示的行数?

list.setVisibleRowCount(8)不起作用。

list使用AbstractListModel的扩展名作为模型。

主菜单JFrame使用GridBagLayout

我不知道是什么可能导致这种情况发生,因为我甚至试图撤消 项目中所做的所有更改,结果仍然相同。

private JList<String> list;
[...]

list = new JList<String>(); 
list.setVisibleRowCount(8); //doesn't change anything
[...]

JScrollPane scroll2 = new JScrollPane(list);
[...]

list.setModel(new BookListModel(library));
list.repaint(); //the model gets the data for the list, and refresh is needed

[...]

GridBagConstraints c = new GridBagConstraints();
c.gridx = 0;
c.gridy = 4;
c.gridwidth = 2;
frame.add(scroll2, c);

image http://dl.dropbox.com/u/71389667/problem.jpg

2 个答案:

答案 0 :(得分:0)

嗯......现在很难找到导致问题的原因所以首先我建议您在继续查看错误之前先阅读this tutorial ...

至于这一刻,我可能会认为问题实际上可能来自布局管理器或此方向的某些事情...尝试围绕包含JList的面板(或您使用的组件......)布局管理器。现在看来你正在使用某种绝对的,所以改成它让我们说例如FlowLayout。

作为另一个提示,检查是ListModel添加了null元素?

如需更多建议,可以查看更多代码......


报告是否有帮助

答案 1 :(得分:0)

我认为我发现了问题,但我不知道是什么导致它:首先,我的书籍保存在磁盘上的文件夹(称为库)中的xml文件中;现在,如果我删除此文件夹,以便启用按钮Create Library,则JList看起来是正常大小(显示8行)。即使我添加书籍,JList仍然保持不变,这很好。当我尝试实际更改已创建的xml文件时出现问题,因为默认情况下文件看起来像这样

<?xml version="1.0" encoding="UTF-8"?>
<book name="name" author="author" isbn="isbn" />`

如果我这样做

<?xml version="1.0" encoding="UTF-8"?>
<book name="name" author="" author="" >
<chapter title="chapter1">
    <paragraph>
        <sentence>sentence1</sentence>
        <sentence>sentence1</sentence>
        <sentence>sentence1</sentence>
        <sentence>sentence1</sentence>
    </paragraph>

</chapter>
</book>

JList显示屏已拧紧。

如果我这样做:

<?xml version="1.0" encoding="UTF-8"?>
<book name="fadsf" author="" isbn="" >
    <chapter title="chapter1">
         <paragraph>
            <sentence>sentence1</sentence>
            <sentence>sentence1</sentence>
            <sentence>sentence1</sentence>
    </paragraph>
    </chapter>
</book>

它工作正常。 如果我添加第四句话,那么事情就会变得难看。