2016-04-09 6 views
0

ボタン(たとえばmainBtn)をクリックしてmealList内の文字列を選択し、別のボタン(starterBtnなど)をクリックすると、コンソール内でエラーがスローされます。もし誰かが正しい方向に私を振って、なぜコードがエラーメッセージを投げているのかを私に見せてくれれば大いに感謝します。エラーメッセージはListModelをクリックしたときにエラーが発生する

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) 
+0

この時点で例外がスローされています - > MenuPage.updateLabel(MenuPage.java:317)。たぶんあなたがその方法をコピーすると、誰かがあなたを助けることができます。 – RubioRic

+0

すぐに役立つように、[MCVE]または[短く、自己完結型の正しい例](http://www.sscce.org/)を投稿してください。 –

+0

あなたは助けを受けるときに答えを受け入れるのをまだ待っています。例:http://stackoverflow.com/questions/36509153/trying-to-create-a-remove-button-which-removes-items-from-a-list。まだ適切な変数名を使用するのを待っています。上記のリンクで与えられた基準に「DLM」はどのように従いますか? – camickr

答えて

2

あなたがアイテムを選択した時はいつでも、あなたは、インデックスの値は、あなたが選んだものを確立してはいけません、無効なインデックスを呼び出しているので、ボタンが

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); 

として登録されます-1ボタンの解放のために、ActionEventに含まれる選択項目のインデックス値を持たせたい

+0

エラーメッセージが表示されている場所にメソッドを追加しました。 –

+0

また、あなたは有効なインデックス位置を持っていませんが、基本的にはボタンのArrayListですが、ボタンを押すと値がそのインデックスに設定されていないため、-1インデックスが得られます。ボタンが離され、変更がマークされたため、-1あなたのオプションのインデックスの代わりに – Rocket6488

+0

有効なインデックス位置を追加しました。コードが有効になりました。 –

関連する問題