2012-12-10 14 views
13

Mam numer JList, w którym wyświetlam niektóre identyfikatory. Chcę przechwycić identyfikator kliknięty przez użytkownika i odtworzyć go na JLabel.Znajdź wybraną pozycję z listy JList i wyświetl ją w czasie rzeczywistym.

String selected = jlist.getSelectedItem().toString(); 

Powyższy kod podaje wybraną wartość JList. Ale ten kod musi być umieszczony wewnątrz zdarzenia przycisku, gdzie po kliknięciu przycisku otrzyma wartość JList i przypisze ją do JLabel.

Ale chcę zrobić, jak tylko użytkownik kliknie element z JList, aby zaktualizować JLabel w czasie rzeczywistym. (bez konieczności klikania przycisków, aby wywołać akcję)

Odpowiedz

19

Prostym przykładem byłoby jak poniżej używając listselectionlistener

import java.awt.Dimension; 
import java.awt.FlowLayout; 

import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JList; 
import javax.swing.event.ListSelectionEvent; 
import javax.swing.event.ListSelectionListener; 

public class JListDemo extends JFrame { 

    public JListDemo() { 

     setSize(new Dimension(300, 300)); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setLayout(new FlowLayout()); 
     final JLabel label = new JLabel("Update"); 
     String[] data = { "one", "two", "three", "four" }; 
     final JList dataList = new JList(data); 

     dataList.addListSelectionListener(new ListSelectionListener() { 

      @Override 
      public void valueChanged(ListSelectionEvent arg0) { 
       if (!arg0.getValueIsAdjusting()) { 
        label.setText(dataList.getSelectedValue().toString()); 
       } 
      } 
     }); 
     add(dataList); 
     add(label); 

     setVisible(true); 

    } 

    public static void main(String args[]) { 
     new JListDemo(); 
    } 

} 
+0

proszę dać mi znać o przyczynie sporu. może mi pomóc – Vinay

+0

Dlaczego to jest głosowanie, czy ktoś może wyjaśnić. Jestem nowicjuszem –

+2

Zbyt dużo bałaganu, staraj się, aby twoje odpowiedzi były dokładne. Ponieważ autor już wie, jak skonfigurować klasy Java, detektory itp., Przydatna jest tylko część nasłuchiwania. Usuwam moje zgłoszenie, ponieważ odpowiedź jest nadal poprawna. – Blacklight

8

Dlaczego nie umieścić ListSelectionListener na swoim JList i dodać powyższy kod do niego.

Ja zakładając, że już wie, jak tworzyć słuchaczy na JButtons, w oparciu o Twoje pytanie, to wystarczy, aby dostosować go do stworzenia ListSelectionListener zamiast, a następnie przypisać do swojego słuchacza JList użyciu jlist.addListSelectionListener(myListener);

There jest ładny poradnik here że powinno Ci zacząć, lub zapoznać się z documentation

należy dążyć do czegoś takiego ...

jlist.addListSelectionListener(new ListSelectionListener() { 
    public void valueChanged(ListSelectionEvent event) { 
     if (!event.getValueIsAdjusting()){ 
      JList source = (JList)event.getSource(); 
      String selected = source.getSelectedValue().toString(); 
     } 
    } 
}); 
+2

niepełne .. (czego efektem @sharon już zauważyliśmy w drugiej odpowiedzi) – kleopatra

+0

Dzięki @kleopatra, odpowiedź odpowiednio zaktualizowane. – wattostudios

5

Użyj ListSelectionListener:

JList list = new JList(...); 
list.addListSelectionListener(new ListSelectionListener() { 
    public void valueChanged(ListSelectionEvent evt) { 
    if (!evt.getValueIsAdjusting()) { 
     // code here 
    } 
    } 
}); 
+4

niekompletne .. (efekt, którego @sharon już zauważył w drugiej odpowiedzi) – kleopatra

+0

@kleopatra Dziękuję, zrobiłem również edycję, aby zachować poprawność! – Blacklight