我试图做一个删除按钮,它将从’order_List’中删除一个项目。我创建的按钮“ removeButton”仅从列表中删除一项,然后显示错误消息。
menulist listOrder = new menulist(); order_List = new JList(listOrder); order_List.setFont(new Font("Lucida Grande", Font.PLAIN, 10)); order_List.setBounds(457, 72, 241, 105); contentPane.add(order_List); JButton order_Btn = new JButton(); order_Btn.setText("Place Order"); order_Btn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int selectionNumber = meal_List.getSelectedIndex(); if (selectionNumber == -1){ JOptionPane.showMessageDialog(MenuPage.this, "Please select a meal"); } else { Food orderedMeal = (Food) meal_List.getSelectedValue(); JOptionPane.showMessageDialog(MenuPage.this, "You have ordered " //clear the last order . find a code to do that + orderedMeal + ""); listOrder.addElement(orderedMeal); } } }); JButton removeButton = new JButton("remove"); removeButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int selectionNumber = meal_List.getSelectedIndex(); if (selectionNumber == -1) { JOptionPane.showMessageDialog(MenuPage.this, "Remove Item"); } else { listOrder.removeElementAt(selectionNumber); } } }); removeButton.setBounds(585, 189, 117, 29); contentPane.add(removeButton); }
出现错误信息。
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 2 >= 1 at java.util.Vector.removeElementAt(Vector.java:558) at javax.swing.DefaultListModel.removeElementAt(DefaultListModel.java:331) at MenuPage$10.actionPerformed(MenuPage.java:293)
int selectionNumber = meal_List.getSelectedIndex();
您可以从“ meal_List”中获取选定的索引。
listOrder.removeElementAt(selectionNumber);
但是您尝试从“ listOrder”中删除该项目。
保持一致,并对两个语句使用相同的JList。
另外,请与命名保持一致。为什么在一个JList名称中使用“ _”?变量名称不应包含下划线。查看Java约定以了解一些基础知识。