代码之家  ›  专栏  ›  技术社区  ›  Jérôme

显示从下到上摆动的项目列表

  •  2
  • Jérôme  · 技术社区  · 16 年前

    我需要在列表中显示项目(只读),但是我需要从下到上显示它,而不是默认的从上到下显示列表的方式。

    +-----------------+
    |                 |
    |                 |
    |                 |
    |                 |
    |          value 3|
    |          value 2|
    |          value 1|
    +-----------------+
    

    如果添加了新项,则应将其添加到列表中,如下所示:

    +-----------------+
    |                 |
    |                 |
    |                 |
    |          value 4|
    |          value 3|
    |          value 2|
    |          value 1|
    +-----------------+
    

    我找不到允许我这样做的Swing组件。

    3 回复  |  直到 16 年前
        1
  •  2
  •   Joe Carnahan    16 年前

    在代码的某个地方,每个新项( value4 ,在您的示例中)必须通过将其添加到列表模型中的某个位置添加到列表中。假设您的列表 list 它有一个 DefaultListModel 打电话 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 列表框 拥抱底部的空间,然后你可以把你的 列表框 JPanel 告诉它要粘到底 面板 BorderLayout .

    JScrollPane ,如下所示:

    JScrollPane listScrollPane = new JScrollPane(list);
    

    面板 与列表背景相同的颜色,然后您可以将该列表放在滚动窗格中:

    JPanel panel = new JPanel();
    panel.setLayout(new BorderLayout());
    panel.setBackground(list.getBackground());
    panel.add(list, BorderLayout.SOUTH);
    JScrollPane listScrollPane = new JScrollPane(panel);
    
        2
  •  0
  •   camickr    16 年前

    在滚动窗格中添加一个包含胶水和列表的框。

        3
  •  0
  •   Amber Shah    16 年前

    在侦听新项的侦听器方法中:

        String labelText = new String();
        for(int i = list.size()-1; i >= 0; i--)
        {
            labelText = list.get(i) + "<br>" + labelText;
        }
        label.setText(labelText);