【问题标题】:Error thrown when I click out of ListModel当我点击 ListModel 时抛出错误
【发布时间】:2016-04-09 14:37:15
【问题描述】:

当我单击一个按钮(例如 mainBtn)然后在 mealList 中选择一个字符串,然后单击另一个按钮(例如 starterBtn)时,控制台中会抛出一个错误。如果有人可以将我推向正确的方向并告诉我为什么代码会抛出错误消息,我们将不胜感激。

public void updateLabel(menulist model) {


int selectionNumber = mealList.getSelectedIndex();
if (selectionNumber == -1){
} else {
    Food menulist = (Food) mealList.getSelectedValue();
Food itemFood = (Food) ((menulist) model).getElementAt(selectionNumber);

错误信息

Exception in thread "AWT-EventQueue-0"     java.lang.ArrayIndexOutOfBoundsException: -1
at java.util.Vector.elementData(Vector.java:734)
at java.util.Vector.elementAt(Vector.java:477)
at javax.swing.DefaultListModel.getElementAt(DefaultListModel.java:89)
at MenuPage.updateLabel(MenuPage.java:317)

【问题讨论】:

标签: java swing indexoutofboundsexception jlist


【解决方案1】:

您正在调用无效索引,无论何时选择项目,您都不能确定您选择的索引值,因此,由于释放按钮,按钮将注册为 -1,您希望拥有ActionEvent 中包含的所选项目的索引值

【讨论】:

  • 我现在添加了显示错误消息的方法。
  • 再一次,你没有一个有效的索引位置,你所拥有的本质上是一个按钮的 ArrayList,但是当你按下按钮时,值没有设置为那个索引,这就是你为什么正在获得 -1 索引,-1 因为按钮已被释放并且标记更改而不是您的选项的索引
  • 我添加了一个有效的索引位置,代码现在可以工作了。
猜你喜欢
  • 2020-06-28
  • 1970-01-01
  • 2021-12-22
  • 2017-08-05
  • 2022-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多