【问题标题】:JList - `setListData()` causes `getSelectedValue()` to return nullJList - `setListData()` 导致 `getSelectedValue()` 返回 null
【发布时间】:2017-01-09 17:14:37
【问题描述】:

当我创建我的 JList 时,我可以使用 getSelectedValue() 打印出我在列表中选择的字符串。只要我更改列表中的内容,返回的所有内容都是空的。

创建列表时,我有这个:

matchList.setModel(new javax.swing.AbstractListModel<String>() {
    String[] playerList = {"test"};
    public int getSize() { return playerList.length; }
    public String getElementAt(int i) { return playerList[i]; }
});

稍后我将 JList 更改为包含字符串数组:

matchList.setListData(Bracket.wr1);

数组中的所有内容都显示在 JList 中,但如果我尝试使用 getSelectedValue() 来获取正在显示的字符串,它只会返回 null。

我做错了什么?

【问题讨论】:

  • hm 所以唯一的问题是更改选项后没有选中项?

标签: java arrays jlist


【解决方案1】:

似乎没有选择了。根据Oracle DocumentationgetSelectedValue()

[r]如果没有选择,则返回 null。

因此,如果不再有默认选择,您可能应该将第一个元素设置为默认值:

list.setSelectedIndex(0);

【讨论】:

  • 好吧,所以它不再返回 null,但现在我只能选择列表中的第一个选项。该程序的工作方式是从 JList 中选择一个项目,然后单击按钮输入信息。我认为发生的事情是一旦按下按钮,列表上就不再有选择。我现在知道列表的内容不是导致问题的原因。
  • @sumsum2 能否请您提供MCVE 以便我重现该问题?
  • @sumsum2 也是,如果内容不是问题,我很难用您当前的代码 sn-p 找出导致这种行为的原因
  • 正如网站上所说,我建议您创建一个新项目并使用您认为与问题相关的最少代码。这样,您甚至可以自己解决问题/更准确地描述问题所在。
猜你喜欢
  • 2015-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-21
  • 1970-01-01
  • 2012-10-16
  • 2012-12-03
相关资源
最近更新 更多