2012-01-18 9 views
6

A pesar de una gran cantidad de investigaciones, no puedo encontrar una respuesta o resolver cómo obtener el elemento de texto seleccionado dentro de una lista J en una variable. Por lo tanto, apreciaría algo de ayuda. Intenté seleccionar el índice del elemento seleccionado y los elementos eliminados con este código y eso funciona bien, pero a medida que escribía, quería que el texto seleccionado fuera una variable después de presionar un botón. ¡Gracias!¿Obtiene el elemento de texto dentro de JList en una variable?

int index = list.getSelectedIndex(); 
model.removeElementAt(index); 

partes de mi código JList:

model = new DefaultListModel(); 
list = new JList(model); 
list.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION); 
JScrollPane listScroller = new JScrollPane(list); 
listScroller.setPreferredSize(new Dimension(430, 60)); 

partes de mi código ActionListener:

// Select customer 
if(event.getSource() == buttonSelectCustomer){ 
int index = list.getSelectedIndex(); // Just for test 
model.removeElementAt(index); // Just for test 
int number = model.getSize(); // Just for test 
//String selectedText = list.getSelectedValue(); // Not working! 
} 

Respuesta

7

Utilice el método ListModel#getElementAt(int) con el índice seleccionado en ese momento. Si está seguro de que su modelo solo contiene String instancias, puede convertirlo directamente en String así como

+0

Gracias por la repetición. Escribo esto: String selectedText = model.getElementAt (index); pero recibo un error dentro de Eclipse diciendo que no puedo convertir de objeto a String !? –

+1

Deberías lanzarlo ... ¿no es este un buen punto para tomar algunos tutoriales y comenzar a leer? Para su problema, use: 'String selectedText = (String) model.getElementAt (index);', que probablemente podría lograr al dejar que Eclipse lo solucione – Robin

+0

Estoy de acuerdo con Robin. Lea algunos tutoriales para principiantes sobre Java y probablemente para usar. – tichy

2

No puede obtener el texto seleccionado porque intenta obtenerlo después de haber eliminado el elemento seleccionado. puede cambiar su código:

if(event.getSource() == buttonSelectCustomer) 
{ 
    int index = list.getSelectedIndex(); // Just for test 
    model.removeElementAt(index); // Just for test 
    int number = model.getSize(); // Just for test 
    String selectedText = list.getSelectedValue(); // Not working! 
} 

a mi código:

if(event.getSource() == buttonSelectCustomer) 
{ 
    String selectedText = (String)list.getSelectedValue(); // it works 
    int index = list.getSelectedIndex(); // Just for test 
    model.removeElementAt(index); // Just for test 
    int number = model.getSize(); // Just for test 
} 

entonces funciona.

+0

Sí, lo descubrí, pero el problema principal era cómo obtener el texto en una variable String y obtuve errores en Eclipse antes de ejecutar el programa, luego descubrí que eliminó el elemento. Olvidé eliminar esa parte del código. ¡Gracias! –

+0

Lo entiendo, eres bienvenido. – Alanmars

-1

Es fácil recuperar el ítem del índice seleccionado. Aquí es un simple código fragmento:

String[] string = new String[]{"Hello","Hi","Bye"}; 
JList list = new JList(string); 

Ahora utilice el código siguiente para obtener el elemento seleccionado como una cadena:

String item = list.getSelectedIndex().toString(); 
Cuestiones relacionadas