2016-12-06 6 views
0

オブジェクト(arrayListの一部)がクリックされた後、返されたインデックスを使用してコードを呼び出すときを判断しようとしています。 -1:ここe.getSource()を型変換してArrayListのインデックスを返す方法は?

は私のコードスニペットは、私がにArrayIndexOutOfBoundsExceptionを得続ける

this.addMouseListener(new MouseAdapter() { 
     public void mousePressed(MouseEvent e) { 

      if (cursorState==1) { 
       int indx = trees.indexOf(e.getSource()); 
       Tree tempTree = trees.get(indx); 
       tempTree.killTree(); //Code I call for the object that was clicked on 
       System.out.println("indx"); //Troubleshoot 
       repaint(); 
      } 


     } 

です。

私の検索から、それは全くインデックスを取得していないようです。

+2

'trees 'とは何ですか?そして、あなたはどのようなジェネリック型引数をインスタンス化しましたか? – Travis

+0

'indexOf'は明らかに' -1'を返しています。これは 'e.getSource()'から返された値がツリーに存在しないことを意味します。 – n247s

答えて

0

indexOfメソッドを使用して配列内のオブジェクトのインデックスを取得するには、equalsメソッドがツリーオブジェクトのクラスタイプでオーバーライドされていることを確認してください。

ArrayList not using the overridden equalsを参照すると、equalsメソッドがオーバーライドされます。

+0

私はそれを上書きするか分かりません。研究の少しで、私はこれを試みたが、それは動作しませんpublic int hashCode(){ \t return java.util.Objects.hashCode(id); \t} \t \tパブリックブール等しい(オブジェクトo){ \t \t場合(ツリーのinstanceof O){ \t \t // ID比較 \t \tツリーMO =(木)O。 \t \t return mo.id.equals(id); \t \t} \t \t return false; \t \t} – GGQOP

+0

ツリーのタイプとe.getSource()オブジェクトを明確にできますか? – xitter

+0

ツリー(配列リスト)はツリー型であるため、私のメインコードではツリー型でそれをタイプしています。ツリーも何も拡張していません。これが私の頭を上っているように思われるのは残念です。簡単な言葉では、drawTree(Graphics2D g2)という1つのメソッドを持つ単純なクラスでは、コードと同じに見えます。 – GGQOP

関連する問題