¿Cómo modificar un control en un formulario diferente?
Frecuentes
Visto 178 veces
0
Necesito usar el contenido de la primera columna de una JTable para establecer los valores en una lista desplegable de JComboBox. El problema es que JTable está en un formulario diferente (JFrame), por lo que no se puede acceder directamente al JComboBox privado. ¿Cómo puedo enviar una señal y/o evento desde el formulario JTable al formulario JComboBox para hacerle saber que necesita actualizar su contenido desplegable? No me preocupan los datos, puedo hacer una cadena pública [] o algo así, pero ¿cómo notifico correctamente al JComboBox que necesita actualizarse?
2 Respuestas
3
Necesito usar el contenido de la primera columna de un
JTable
para establecer los valores en unJComboBox
la lista desplegable. El tema es que elJTable
está en una forma diferente (JFrame
) por lo que el privadoJComboBox
no es directamente accesible.
¿Y por qué la JComboBox
y JTable
deben tener acceso el uno al otro? Esos son solo componentes de vista. ¿Qué sucederá si desea mostrar el cuadro combinado sin mostrar la tabla (por ejemplo, en las pruebas)? Si recupera sus datos directamente del JTable
tienes un problema serio. El momento en que creaste tu JTable
tuviste un TableModel
que contiene los datos reales de la JTable
. Es ese modelo (o al menos los datos de ese modelo) el que debe compartirse.
Deje que el modelo del cuadro combinado y el modelo de la tabla compartan los mismos datos y todo irá bien.
contestado el 03 de mayo de 12 a las 22:05
Lo que dices es correcto. Los datos de la tabla se guardan en un archivo. Pero me han encargado una forma de actualizar el contenido del cuadro combinado cuando el usuario realiza un cambio en la tabla. El formulario que contiene la tabla normalmente no está visible, solo cuando es necesario cambiarlo. Los cambios en la tabla se guardan en un archivo desde el cual el cuadro combinado puede actualizarse, pero el cuadro combinado necesita saber cuándo actualizar. Estoy tratando de encontrar el tutorial de ActionListener pero la página es que falta. - Jacknad
@jacknad El TableModel
desencadena eventos cuando se modifican los datos. Puede agregar un oyente a ese modelo: petirrojo
Volviendo a su respuesta original, dejaré que el cuadro combinado y la tabla compartan los mismos datos. Ahora solo necesito descubrir cómo modificar el cuadro combinado con los datos compartidos a medida que se abre, pero ese es un problema diferente. Un millón de gracias. - Jacknad
2
El modelo Swing MVC diría que debe actualizar los objetos del modelo. Cuando se vuelve a mostrar JComboBox, ve los nuevos valores del modelo.
contestado el 03 de mayo de 12 a las 21:05
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas java swing netbeans or haz tu propia pregunta.
Si necesita acceder al cuadro combinado desde fuera del jframe, hágalo público. Mejor aún, agregue un método público que devuelva su valor. - SJuan76
Parece que no se puede hacer público el JComboBox. Es un control de swing que usé de la paleta de netbeans. Probé un método público para devolver el modelo JComboBox al formulario que desea cambiar, pero el compilador se queja de que una variable no estática (el JComboBox) no puede ser referenciada desde un contexto estático. - jacknad
Puede agregar un oyente al cuadro combinado y dejar que actualice su estado: SJuan76