如何在jpanel对话框中更改list元素的值

时间:2014-10-16 14:52:53

标签: java swing

我在jpane的jlist中添加动态值。 当我双击jlist的一个元素时,我想改变该元素的值。

怎么做?

String bigList[] = new String[2];
bigList[0] = "first value";
bigList[1] = "second value";

final JList list = new JList(bigList);

list.addMouseListener(new MouseAdapter() {
    public void mouseClicked(MouseEvent e) {
        if (e.getClickCount() == 2) {
            int index = list.locationToIndex(e.getPoint());
            System.out.println("Double clicked on Item " + index);

            ??????? CHANGEVALUE(index,"MY NEW VALUE); ????????
        }
    }
});
JOptionPane jpane = new JOptionPane();
jpane.showMessageDialog(null, list, "MYTITLE", JOptionPane.PLAIN_MESSAGE);

1 个答案:

答案 0 :(得分:2)

您可以使用DefaultListModel来实现此目的。 DefaultListModel有方法setElementAt("value " ,index)。使用此方法,您可以更改双击项的值。

添加此行

d.setElementAt("MY NEW VALUE", index);

会给出您期望的结果。

DefaultListModel d = new DefaultListModel();
d.addElement("first value");
d.addElement("second value");

final JList list = new JList(d);

list.addMouseListener(new MouseAdapter() {
    public void mouseClicked(MouseEvent e) {
        if (e.getClickCount() == 2) {
            int index = list.locationToIndex(e.getPoint());
            System.out.println("Double clicked on Item " + index);

            //??????? CHANGEVALUE(index,"MY NEW VALUE); ????????
            d.setElementAt("MY NEW VALUE", index);
        }
    }
});
JOptionPane jpane = new JOptionPane();
jpane.showMessageDialog(null, list, "MYTITLE", JOptionPane.PLAIN_MESSAGE);