参考:How do I display something I enter in a JOptionPane on the JFrame?
我已经创建了一个JList,它也输出了我输入的内容,并在JPanel上显示为JLabel,就像我使用链接所做的那样。但是,这次如何删除相应的JLabel?非常感谢任何有帮助的人!
编辑: 我想要做的是当我单击JList中的删除按钮时,面板上的标签也将被删除。
答案 0 :(得分:1)
执行以下操作:
String stringToRemove = "CATS";
jLabel.setText(jLabel.getText().replace(stringToRemove, "");
如果您说JLabel
设置为:"CATS DOGCATS APPLE"
,则在删除" DOG APPLE"
字符串
CATS
答案 1 :(得分:1)
1)放置JPopupMenu而不是JOptionPane
2)将List Selection Listener添加到JList,设置选择模型
3)检查SelectedIndex
> -1,如果从removeItem(s)
或JList
ListModel
4)最好将JList Items
添加到DefaultListModel
答案 2 :(得分:1)
我会添加一个答案来提供一些代码,因为我觉得我的评论被误解了。
首先,如果没有必要,请不要对每个列表条目使用标签,而是使用一个标签,其内容是列表条目的串联。然后在列表更改时更新标签的文本。
基本上,你有一个像这样的方法:
private void updateLabel() {
StringBuilder text = new StringBuilder();
//this assumes listModel is a DefaultListModel and doesn't contain null values
//adapt for other list models and add any necessary checks
for( Object entry : listModel.toArray() ) {
text.append( entry.toString()).append(" ");
}
label.setText( text.toString() );
}
然后为列表模型添加一个监听器:
listModel.addListDataListener( new ListDataListener() {
public void intervalAdded(ListDataEvent e) {
updateLabel();
}
public void intervalRemoved(ListDataEvent e) {
updateLabel();
}
public void contentsChanged(ListDataEvent e) {
updateLabel();
}
});
因此,当您更改列表中的内容时,标签会自动更新。
答案 3 :(得分:0)
我认为你正在寻找一个ListModel。实施后,您可以轻松添加/删除项目。
例如:
// adding
listModel = new DefaultListModel();
listModel.addElement("Jane Doe");
list = new JList(listModel);
// removing (the selected item)
int index = list.getSelectedIndex();
listModel.remove(index);
有关详细信息,请参阅Tutorial。