我需要在列表中显示项目(只读),但不是默认的从上到下显示列表的方式,我需要从下到上显示它。
+-----------------+
| |
| |
| |
| |
| value 3|
| value 2|
| value 1|
+-----------------+
如果添加了新项目,则应将其添加到列表中,如下所示:
+-----------------+
| |
| |
| |
| value 4|
| value 3|
| value 2|
| value 1|
+-----------------+
我找不到允许我这样做的Swing组件。 我没有Swing的经验,也不知道如何解决这个问题。
答案 0 :(得分:2)
在代码中的某个位置,每个新项目(在您的示例中为value4
)必须通过将其添加到列表模型中添加到列表中。我们假设您的列表名为list
,并且由名为DefaultListModel
的{{1}}支持,如下所示:
listModel
在某个地方,您拥有实际添加新元素的代码,如下所示:
// Create a new list of items
DefaultListModel listModel = new DefaultListModel();
JList list = new JList(listModel);
如果您希望始终在列表的开头添加新元素,那么您只需更改代码即可调用public void addNewElement(Object elementToAdd)
{
listModel.addElement(elementToAdd);
}
而不是insertElementAt()
,如下所示:
addElement()
同时,如果您的public void addNewElement(Object elementToAdd)
{
listModel.insertElementAt(elementToAdd, 0);
}
显示在更大的空间内,并且您希望JList
拥抱空间的底部,那么您可以将JList
置于其中一个JList
并告诉它使用JPanel
贴在JPanel
的底部。
因此,例如,如果您曾经将列表放入BorderLayout
,就像这样:
JScrollPane
您可以将列表放入与列表背景颜色相同的JScrollPane listScrollPane = new JScrollPane(list);
,然后您可以将该列表放在滚动窗格中:
JPanel
答案 1 :(得分:0)
将包含胶水的盒子和列表添加到滚动窗格。
答案 2 :(得分:0)
在侦听新项目的侦听器方法中:
String labelText = new String();
for(int i = list.size()-1; i >= 0; i--)
{
labelText = list.get(i) + "<br>" + labelText;
}
label.setText(labelText);