Java 如何从JList中删除所选项目
当用户单击按钮时,我试图从JList中删除所选项目 目前我有这样的想法:Java 如何从JList中删除所选项目,java,jlist,Java,Jlist,当用户单击按钮时,我试图从JList中删除所选项目 目前我有这样的想法: private void clickActionPerformed(java.awt.event.ActionEvent evt) { myList.remove(myList.getSelectedIndex()); } @Override public void actionPerformed(ActionEvent e) { switch(e.getActionCommand()){ cas
private void clickActionPerformed(java.awt.event.ActionEvent evt) {
myList.remove(myList.getSelectedIndex());
}
@Override
public void actionPerformed(ActionEvent e) {
switch(e.getActionCommand()){
case "Remove": {
int index = this.list[0].getSelectedIndices().length - 1;
while (this.list[0].getSelectedIndices().length != 0) {
this.defaultListModel[0].removeElementAt(this.list[0].getSelectedIndices()[index--]);
}
}
...
单击按钮删除项目时,出现以下错误:
java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 3
如何修复此错误,以及我的代码是否删除了多个项?我想您正在使用某种列表模型来构建JList?如果是这种情况,您可以执行以下操作:
Object[] oo=new Object[] { "Clark", "Skill" };
for(Object o :oo)
model.addElement(o);
final JList list = new JList(model);
JButton btnDelete = new JButton("Delete");
btnDelete.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(list.getSelectedIndex()>=0)
model.remove(list.getSelectedIndex());
}
});
DefaultListModel list = new DefaultListModel();
list.add("foo");
然后,您只需在单击“黑名单按钮”时执行此操作:
list.remove(JList.getSelectedIndex());
如果开始从所选索引的最高处删除到最低处,则可以从DefaultListModel中删除多个项目。大概是这样的:
private void clickActionPerformed(java.awt.event.ActionEvent evt) {
myList.remove(myList.getSelectedIndex());
}
@Override
public void actionPerformed(ActionEvent e) {
switch(e.getActionCommand()){
case "Remove": {
int index = this.list[0].getSelectedIndices().length - 1;
while (this.list[0].getSelectedIndices().length != 0) {
this.defaultListModel[0].removeElementAt(this.list[0].getSelectedIndices()[index--]);
}
}
...
尝试删除对象而不是索引:
private JList<MyObject> list;
private DefaultListModel<MyObject> myobjectListModel;
public FabricaCoches()
{
....
myobjectListModel = new DefaultListModel<MyObject>();
list = new JList<MyObject>(myobjectListModel);
....
}
@Override
public void actionPerformed(ActionEvent arg0)
{
// get a list with selected objects
List<MyObject> selectedItems = list.getSelectedValuesList();
for (MyObject o: selectedItems)
myobjectListModel.removeElement(o);
私有JList列表;
私有DefaultListModel myobjectListModel;
公共建筑
{
....
myobjectListModel=新的DefaultListModel();
列表=新的JList(myobjectListModel);
....
}
@凌驾
已执行的公共无效操作(操作事件arg0)
{
//获取包含选定对象的列表
List selectedItems=List.getSelectedValuesList();
对于(MyObject o:selectedItems)
myobjectListModel.removeElement(o);
}单击ActionPerformed属于哪个类别?您需要在按钮中添加一个
ActionListener
,然后覆盖actionPerformed
。你确定你在给我们看的地方得到了索引越界异常吗?