【问题标题】:compilation error in adding an element from a jlist从 jlist 添加元素时出现编译错误
【发布时间】:2011-09-04 13:50:43
【问题描述】:

我正在尝试将元素从 Jlist 添加到另一个,如果这是正确的术语,请附加 在搜索时我找到了这段代码并尝试了它,但它不起作用

ListModel made_model = made_list.getModel(); // 1

Object[] orig_sel = orig_list.getSelectedItems(); // 2

Object[] new_made_model = new Object[made_model.size() + orig_sel.length]; // 3

// this block is 4
int i = 0;
for(;i < made_model.size(); i++) 
    new_made_model[i] = made_model.getElementAt(i);
for(; i < new_made_model.length; i++) 
    new_made_model[i] = orig_sel[i - made_model.size());

made_model.setListData(new_made_model); // 5

错误在这一行

  • made_model.setListData(new_made_model); // 5 它告诉我将 made_model 转换为 Jlist,我这样做了,但是在运行课程时,我收到了这个错误

  • javax.swing.JList$1 无法转换为 javax.swing.JList

【问题讨论】:

  • can down-voter share 原因,因为我认为这个问题是有效的 +1
  • 不是反对者,但错误代码的链接可能具有指导意义。

标签: java swing jlist


【解决方案1】:

setListData() 是 JList 的方法,而不是 ListModel 的方法。您不能将 ListModel 转换为 JList。

你的代码应该是:

madeList.setListData( newMadeModel );

编辑:

不要使用数组来创建新模型,只需使用 DefaultListModel:

DefaultListModel model = new DefaultListModel();

然后你可以不使用索引直接将对象添加到模型中:

model.addElement(...);

完成后,将模型添加到列表中:

list.setModel( model );

这样你在使用 3 个数组的索引时出错的可能性较小。

如果您需要更多帮助,请接受此答案(因为它是关于编译错误的)并使用正确的 SSCCE 发布一个新问题,以证明该问题。

【讨论】:

  • 感谢您的回答!但是,我试过了,没有显示错误,但是当我选择两个项目并将它们转移到其他 jlist 时,它只显示最后选择的一个。
  • 嗯,你的问题是关于我解决的编译错误。现在您有一个需要解决的编程错误。请参阅我的编辑以获取建议。
  • 再次感谢您的回答:)
猜你喜欢
  • 1970-01-01
  • 2015-01-14
  • 1970-01-01
  • 2019-08-23
  • 2015-09-06
  • 2013-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多