如何在JList中按索引编辑元素?

时间:2013-12-29 15:55:00

标签: java swing jlist settext

如何在Java Swing中设置JList元素的文本/名称?

我创建了一个包含5个列表元素的列表。

当我这样做时:

int currentIndex = list.getSelectedIndex();

我取当前元素的索引。 我想编辑/修改当前元素索引的Text。 有什么方法吗?

e.g。

list.setText(CurrentIndex,"new text")

2 个答案:

答案 0 :(得分:4)

使用DefaultListModel。它有方法setElementAt(E element, int index)add(int index, E element)

  • setElementAt(E element, int index) - 将此列表的指定索引处的组件设置为指定的元素。该位置的前一个组件将被丢弃。

  • add(int index, E element) - 将指定元素插入此列表中的指定位置。


您可以使用JList初始化DefaultListModel,然后使用所有DefaultListModel方法

DefaultListModel model = new DefaultListModel();
JList list = new JList(model);

然后只使用它的方法

model.setElementAt("new text", index);
model.add(index, "new text");

请参阅: DefaultListModel javadoc for more methods | How to use Lists tutorial

答案 1 :(得分:0)

//鼠标单击事件

private void jListClientFileHeaderMappedMouseClicked(java.awt.event.MouseEvent evt){ // TODO在此处添加您的处理代码:

    JList<String> theList = (JList) evt.getSource();
    if (evt.getClickCount() == 2) { //

        JFrame frame = new JFrame();

        int index = theList.locationToIndex(evt.getPoint());
        if (index >= 0) {

            final JList list = ((JList) (evt.getComponent()));
            if (list.getSelectedIndex() != -1) {
                int i = list.getSelectedIndex();
                System.out.println(list.getSelectedIndex());
                DefaultListModel<String> listModel = (DefaultListModel<String>) jListClientFileHeaderMapped.getModel();
                Object result = JOptionPane.showInputDialog(frame, "value:");
                System.out.println(result);
                listModel.remove(i); //remove jlist item value 
                listModel.add(i, result.toString()); //add dialog text value

            }
        }
    }

}