引用此:How do I display something I enter in a JOptionPane on the JFrame?
我制作了一个 JList,它也输出我输入的内容,并且它在 JPanel 上显示为 JLabels,就像我使用链接所做的那样。但是,这次如何删除相应的 JLabel 呢?非常感谢任何愿意提供帮助的人!
编辑: 我想要做的是,当我单击 JList 中的删除按钮时,面板上的标签也将被删除。
最佳答案
我将添加一个答案以提供一些代码,因为我感觉我的评论被误解了。
首先,如果没有必要,不要为每个列表条目使用一个标签,而是使用一个其内容是列表条目串联的标签。然后,每当列表更改时更新标签的文本。
基本上,你有这样的方法:
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();
}
});
因此,当您更改列表中的某些内容时,标签将自动更新。
关于java - 如何从面板上删除多个标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8324598/