[JAVA] Problema con JTable y columna JComboBox

Kaiyaran

Hola buenas tardes, estoy haciendo una mini aplicación para un juego en Java (algo sencillo, nada complicado, no soy un pro precisamente con Java) y no se como hacer que en un JTable una columna sea un JComboBox pero variable.
Os digo un caso.
Class Arma{
String nombre;
int dmg;
int vel;
/Resto irrelevante/
}

Class Personaje{
String nombre;
Arma arma1;
Arma arma2;
Arma arma2h;
Arma armaDist;
/El resto es irrelevante/
}

Imaginemos que tengo estos Personajes (Nombre - arma1 - arma2- arma2h - armaDist). La X es nada.
Federico - Daga - Espada - X - X .
Pedro - X - X - Mandoble - Arco.
Lorena - Estoque - Daga - Espadón - Cerbatana.

Yo selecciono para combatir solo a Federico y Lorena, dejando a Pedro en el banquillo.
Quiero que en la JTable me salga algo así.

Nombre(String) | Arma(JComboBox)

Federico | {Daga,Espada} <-Aqui solo podría elegir una de las 2, por eso es JComboBox.

Lorena | {Estoque, Daga, Espadón, Cerbatana} <- Ella puede elegir entre 4 posibles.

Hasta ahora lo único que he conseguido hacer y que se me ha ocurrido, es hacer un ArrayList<JComboBox> e ir relleando JComboBox distintos dependiendo del Personaje, de forma que Federico, Pedro y Lorena tiene cada uno un JComboBox distinto pero se me pone el del ultimo combatiente, y obviamente eso esta mal porque en nuestro ejemplo Federico llevaría las armas de Lorena.

No se como de complicado puede llegar a ser, pero con que en el JComboBox aparezca el nombre de las armas que lleva cada personaje es suficiente.

Muchisimas gracias por la ayuda.

Lecherito

#1

1- Sabes como hacer que en una columna de una JTable haya un JComboBox?
2- Si sabes eso, también sabrás que los comboboxes tienen un comboboxmodel que lo puedes cambiar dinámicamente (esto es lo que realmente quieres) y que los datos los tienes en esos objetos. http://docs.oracle.com/javase/7/docs/api/javax/swing/JComboBox.html#setModel(javax.swing.ComboBoxModel)
3- Recoger los datos necesarios para meterlos en un comboboxmodel
4- Saber cuando se ha de cambiar de modelo al combobox

No te puedo decir más ya que no estoy viendo código pero esas son las pautas muy generales de como se haría.

1 respuesta
Kaiyaran

#2
Si, de poner una columna como JComboBox eso lo logré, de manera que hasta he llegado a que el combo contenga absolutamente todas las armas de los combatientes.
No sabia lo del comboboxmodel, de hecho lo que intentaba cambiar siempre era el model de la columna, por eso creo que solo se ponía el del ultimo combatiente.

Con lo que me has dicho creo que puedo lograrlo.

Muchas gracias!

Usuarios habituales

  • Kaiyaran
  • Lecherito