Buenas tardes. Llevo algún tiempo programando en Java, y he llegado aquí por un problema que me he encontrado al que no le veo solución. He buscado en foros y aqui, y hay preguntas parecidas, pero ninguna que yo haya visto me soluciona el problema. El caso es que estoy haciendo un JFrame que muestra un JComboBox parametrizado, esto es, un JComboBox<Prueba>. Pues bien: si Prueba es una clase que hereda de cualquier Collection (en mi caso Prueba extends TreeSet<String>), el JComboBox muestra las opciones desplegables, pero aunque seleccione una no se queda marcada. Queda claro que si hereda de otro tipo de clase sí tiene un comportamiento normal. Lo estoy compilando con Java 1.8.0_40 el código para poder probar ese comportamiento es: import java.awt.FlowLayout; import javax.swing.*; import java.lang.*; import java.util.*;
class Prueba extends LinkedList<String> { public String s; public Prueba(String s) {this.s = s;} public String toString() {return s;}
} public class Dialogo extends JFrame { public static void main(String[] args) {new Dialogo();}
public Dialogo() { JComboBox<Prueba> combo; getContentPane().setLayout(new FlowLayout()); combo = new JComboBox<Prueba>(new DefaultComboBoxModel<Prueba>()); combo.addItem(new Prueba("Primera opción. Solo se puede elegir esta.")); combo.addItem(new Prueba("Esta no se puede elegir.")); combo.addItem(new Prueba("Ni esta")); getContentPane().add(combo); this.pack(); this.setVisible(true); } }
¿alguna idea de qué puede estar pasando...? Gracias por anticipado.
Buenas tardes. Llevo algún tiempo programando en Java, y he llegado aquí por un problema que me he encontrado al que no le veo solución.
He buscado en foros y aqui, y hay preguntas parecidas, pero ninguna que yo haya visto me soluciona el problema.
El caso es que estoy haciendo un JFrame que muestra un JComboBox parametrizado, esto es, un JComboBox<Prueba>.
Pues bien: si Prueba es una clase que hereda de cualquier Collection (en mi caso Prueba extends TreeSet<String>), el JComboBox muestra las opciones desplegables, pero aunque seleccione una no se queda marcada. Queda claro que si hereda de otro tipo de clase sí tiene un comportamiento normal.
Lo estoy compilando con Java 1.8.0_40
el código para poder probar ese comportamiento es:
import java.awt.FlowLayout;
import javax.swing.*;
import java.lang.*;
import java.util.*;
class Prueba extends LinkedList<String>
{
public String s;
public Prueba(String s)
{this.s = s;}
public String toString()
{return s;}
}
public class Dialogo extends JFrame
{
public static void main(String[] args)
{new Dialogo();}
public Dialogo()
{
JComboBox<Prueba> combo;
getContentPane().setLayout(new FlowLayout());
combo = new JComboBox<Prueba>(new DefaultComboBoxModel<Prueba>());
combo.addItem(new Prueba("Primera opción. Solo se puede elegir esta."));
combo.addItem(new Prueba("Esta no se puede elegir."));
combo.addItem(new Prueba("Ni esta"));
getContentPane().add(combo);
this.pack();
this.setVisible(true);
}
}
¿alguna idea de qué puede estar pasando...?
Gracias por anticipado.