2017-11-22 4 views
0

私はArlististをJListに入れました.Jlistでマウスをクリックすると、Arraylistの値/インデックスを取得したいと思います。 私はこれらの行を試してみましたが、クリックされたすべての要素について常に-1でインデックスとしてコンソールに表示されます。ここ は、私のコードの一部は、あなたがあなたのJListである「リスト2」へのMouseListenerを追加します。..mouselistenerを通してArraylistのインデックスを取得するには?

list2.addMouseListener(new MouseListener(){ 
      public void mouseClicked(MouseEvent e){ 
       JPanel MousePanel=new JPanel(); 
       JList listp=new JList(PatientDetailArlist.toArray()); 

       int index = listp.getSelectedIndex(); 
       System.out.println("Index Selected: " + index); 
       String sp = (String) listp.getSelectedValue(); 
       System.out.println("Value Selected: " + sp.toString()); 

       MousePanel.add(listp); 


       tab.add("tab4",MousePanel); 
       visibleGui(); 
       } 
+1

コードは新しい 'listp'を作成するので、その時点で対話はできません。コンポーネントの作成を分けて、それと対話してみてください。 –

答えて

1

です。

list2.addMouseListener(new MouseListener(){ 

しかし、何らかの理由でコードに新しいJListを作成しますか? JListはGUI上に表示されないので、選択されたインデックスを持つことはできません。

JList listp=new JList(PatientDetailArlist.toArray()); 
int index = listp.getSelectedIndex(); 

リスナーのコードに必要なのは次のとおりです。

int index = list2.getSelectedIndex(); 

あるいはさらに良いのMouseEventからクリックされたJListコンポーネント得ることです:

JList list = (JList)e.getSource(); 
int index = list.getSelectedIndex(); 

をしかし、それがされまだ良い解決策ではありません。ユーザーがキーボードを使用して項目を選択するとどうなりますか?適切なGUIの設計は、ユーザがマウスまたはキーボードを使用できるようにするべきである。

したがって、MouseListenerを使用しないでください。代わりにListSelectionListenerを使用して、リスト内の項目の選択の変更をリッスンする必要があります。

開始するための詳細と例については、How to Write a ListSelectionListenerのSwingチュートリアルのセクションをお読みください。

関連する問題