如何在Java Swing中设置JList
元素的文本/名称?
我创建了一个包含5个列表元素的列表。
当我这样做时:
int currentIndex = list.getSelectedIndex();
我取当前元素的索引。 我想编辑/修改当前元素索引的Text。 有什么方法吗?
e.g。
list.setText(CurrentIndex,"new text")
答案 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
}
}
}
}