Foro sobre Java SE > visualizar en un combobox un dato de un Jtable
La verdad es que no entiendo bien tu problema.
En un JComboBox se almacena un número indeterminado de objetos, se pueden visualizar en un menú desplegable, y seleccionar uno de ellos para su visualización cuando se repliega el menú.
https://docs.oracle.com/javase/tutorial/uiswing/components/combobox.html
¿Puedes explicar mejor, a ser posible con ejemplos, lo que quieres lograr?
Hola Gracias por tu respuesta: Tengo en un formulario con un jTable y los Text, combobox respectivos. Al querer visualizar los registros del jTable en los Text y combobox del formulario, estos solamente visualizar los registros correspondientes a los Text y no aparece la información almacenada en la tabla (femenino o masculino) en el combobox .
Los registros están en una tabla de mysql.
Muchas gracias.
¿Con qué código intentas incluir la información que deseas en el combo?
Los combo tienen un modelo interno, como todos los componentes de Swing.
No sé si estás usando su modelo directa o indirectamente. El origen de los datos es irrelevante.
Hola Compañero: Muchas Gracias por su tiempo y contestar. El siguiente código trae los registros seleccionados y los TextFields los trae bien, pero los del JComboBox no se muestran:
En la tabla MySQL se encuentran los registros de forma correcta y deseo que se puedan ver al seleccionar un registro determinado:
private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
int fila=Tabladedatos.getSelectedRow();
if(fila>=0){
mNume.setText(Tabladedatos.getValueAt(fila,0).toString());
mOrigen.getSelectedItem().toString(); //Aquí Está mi problema
mRut.setText(Tabladedatos.getValueAt(fila,2).toString());
mNombre.setText(Tabladedatos.getValueAt(fila,3).toString());
mPaterno.setText(Tabladedatos.getValueAt(fila,4).toString());
mMaterno.setText(Tabladedatos.getValueAt(fila,5).toString());
mDireccion.setText(Tabladedatos.getValueAt(fila,6).toString());
mPoblacion.setText(Tabladedatos.getValueAt(fila,7).toString());
mSexo.getSelectedItem().toString(); // Aquí Está mi problema
mFecha.setText(Tabladedatos.getValueAt(fila,9).toString());
mFono.setText(Tabladedatos.getValueAt(fila,10).toString());
mCelular.setText(Tabladedatos.getValueAt(fila,11).toString());
mDeriva.getSelectedItem().toString(); //ver
mNombre_deriva.setText(Tabladedatos.getValueAt(fila,13).toString());
mRep_legal.setText(Tabladedatos.getValueAt(fila,14).toString());
mCargo.setText(Tabladedatos.getValueAt(fila,15).toString());
mDomicilio.setText(Tabladedatos.getValueAt(fila,16).toString());
mMateria.getSelectedItem().toString();Aquí Está mi problema
mRelacion.setText(Tabladedatos.getValueAt(fila,18).toString());
mRecomen.setText(Tabladedatos.getValueAt(fila,19).toString());
resultado.setText(Tabladedatos.getValueAt(fila,20).toString());
}
else {
JOptionPane.showMessageDialog(null, "No ha Seleccionado una Fila..");
}
}
Muchas gracias.
Hola: Trate de hacer lo siguiente. Ahora trae el dato, pero solo a "MASCULINO" y puede haber "FEMENINO" en la tabla.
El combobox tiene tres alternativas que son:
Seleccionar;
MASCULINO
FEMENINO
String sex=""
;int p;
if(model.getRowCount()>0){
p=Tabladedatos.getSelectedRow();
sex=model.getValueAt(p, 1).toString();
if(sex.compareTo("MASCULINO")==0){mSexo.setSelectedIndex(0);}
else{mSexo.setSelectedIndex(1);}
}
Gracias quien pueda orientarme.
Prueba a hacer la comparación así:
if("MASCULINO".equals(sex.trim().toUpperCase())){
mSexo.setSelectedIndex(0);
}
else{
mSexo.setSelectedIndex(1);
}
Hola Gracias por su respuesta. Probare y aviso como me fue.
Muchas Gracias
Hola; Muchas gracias por la respuesta. Pero no resulto con el siguiente codigo;
String sex=" ";
if("MASCULINO".equals(sex.trim().toUpperCase())){
mSexo.setSelectedIndex(1);
}
else{
mSexo.setSelectedIndex(1);
}
La tabla tiene un campo de nombre cli_sexo y tiene el registro segun su condicio (MASCULINO Y FEMENINO). En el codigo anterior, devuelve solamente "MASCULINO" para cualquier registro.
Muchas gracias si alguien me puede ayudar.
Sigue un test ejecutable, que hace lo que creo que planteas, con la única diferencia de que en vez de un menú, uso un botón para actualizar el combo.
public class NewJFrame extends javax.swing.JFrame {
public NewJFrame() {
initComponents();
jButton1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int selectedRow = jTable1.getSelectedRow();
if (selectedRow >= 0) {
String sexo = jTable1.getModel().getValueAt(selectedRow, 0).toString();
if ("MASCULINO".equals(sexo.trim().toUpperCase())) {
jComboBox1.setSelectedIndex(1);
} else {
jComboBox1.setSelectedIndex(2);
}
}
}
});
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jScrollPane1 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();
jComboBox1 = new javax.swing.JComboBox<>();
jButton1 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{"MASCULINO", null, null, null},
{"FEMENINO", null, null, null},
{"MASCULINO", null, null, null},
{"MASCULINO", null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
jScrollPane1.setViewportView(jTable1);
jComboBox1.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Seleccionar", "MASCULINO", "FEMENINO" }));
org.openide.awt.Mnemonics.setLocalizedText(jButton1, org.openide.util.NbBundle.getMessage(NewJFrame.class, "NewJFrame.jButton1.text_1")); // NOI18N
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 399, Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jComboBox1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 143, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton1, javax.swing.GroupLayout.Alignment.TRAILING))))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 263, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton1)
.addGap(12, 12, 12))
);
pack();
}// </editor-fold>
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new NewJFrame().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JComboBox<String> jComboBox1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable jTable1;
// End of variables declaration
}
Ok. Muchas gracias por tu tiempo y la respuesta.
Veré como lo puedo modificar al extraer el registro de una tabla en msql.
Muchas gracias nuevamente por tu respuesta.
Saludos cordiales.
Enrique
Santiago de Chile.
Hola compañeros: No me resulta, sigo extrayendo solo una condición. Ahora trate de aser lo siguiente y llego al mismo resultado
int selectedRow = Tabladedatos.getSelectedRow();
if (selectedRow >= 0) {
String sexo = Tabladedatos.getModel().getValueAt(selectedRow, 0).toString();
if (sexo.equals("MASCULINO")){
mSexo.setSelectedIndex(1);
} else if (sexo.equals("FEMENINO")){
mSexo.setSelectedIndex(2);
}
}
Ahora bien, el problema es aun mayor para mi, ya que en otros JComboBox que tengo en el formulario, tengo más alternativas, por tanto este código que es para dos alternativas tampoco me serviría ya que es para dos alternativas (en otro JComboBox existen más de 70 alternativas, como lo realizaría en ese caso).
El código entero, es el siguiente;
private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
int fila=Tabladedatos.getSelectedRow();
if(fila>=0){
mNume.setText(Tabladedatos.getValueAt(fila,0).toString());
// Combobox1.getSelectedItem().toString(); // Aquí existen 5 alternatives del combobox1
mRut.setText(Tabladedatos.getValueAt(fila,2).toString());
mNombre.setText(Tabladedatos.getValueAt(fila,3).toString());
mPaterno.setText(Tabladedatos.getValueAt(fila,4).toString());
mMaterno.setText(Tabladedatos.getValueAt(fila,5).toString());
mDireccion.setText(Tabladedatos.getValueAt(fila,6).toString());
mPoblacion.setText(Tabladedatos.getValueAt(fila,7).toString());
int selectedRow = Tabladedatos.getSelectedRow(); // Aquí estoy probando una solución
if (selectedRow >= 0) {
String sexo = Tabladedatos.getModel().getValueAt(selectedRow, 0).toString();
if (sexo.equals("MASCULINO")){
mSexo.setSelectedIndex(1);
} else if (sexo.equals("FEMENINO")){
mSexo.setSelectedIndex(2);
}
}
mFecha.setText(Tabladedatos.getValueAt(fila,9).toString());
mFono.setText(Tabladedatos.getValueAt(fila,10).toString());
mDeriva.getSelectedItem().toString(); // Otro mismo problema con 10 alternativas
mMateria.getSelectedItem().toString(); // Otro mismo problema con 80 alternativas
}
else {
JOptionPane.showMessageDialog(null, "No ha Seleccionado una Fila..");
}
}
Trabajo con Netbeans 8.1 y muy agradecido por su ayuda y tiempo. Recuerden que soy novato.
Saludos cordiales.
lo que puedes hacer es una comparativa entre el dato que obtienes de tu base de datos i el criterio que quieres generar en este caso seria que las variables en las que almacenas el contenido de tu base de datos, ejemplo que tu variable se llame sexo en un if comparas si el contenido de sexo es igual a "Masculino" que te muestre solo masculino sino que muestre femenino
Ya listo. Resulto. Aqui dejo la solución, por si es de ayua para alguien. Muchas gracias a todos.
int filaseleccionada;
filaseleccionada= Tabladedatos.getSelectedRow();
DefaultTableModel modelotabla=(DefaultTableModel) Tabladedatos.getModel();
String nume=(String)modelotabla.getValueAt(filaseleccionada, 0);
String origen=(String) modelotabla.getValueAt(filaseleccionada, 1);
String rut=(String) modelotabla.getValueAt(filaseleccionada, 2);
String nombre=(String) modelotabla.getValueAt(filaseleccionada, 3);
String paterno=(String)modelotabla.getValueAt(filaseleccionada, 4);
String materno=(String)modelotabla.getValueAt(filaseleccionada, 5);
String direccion=(String)modelotabla.getValueAt(filaseleccionada, 6);
String poblacion=(String)modelotabla.getValueAt(filaseleccionada, 7);
String sexo=(String)modelotabla.getValueAt(filaseleccionada, 8);
String fecha=(String) modelotabla.getValueAt(filaseleccionada, 9);
String fono=(String) modelotabla.getValueAt(filaseleccionada, 10);
String celular=(String) modelotabla.getValueAt(filaseleccionada, 11);
String deriva=(String) modelotabla.getValueAt(filaseleccionada, 12);
String Nombre_deriva=(String) modelotabla.getValueAt(filaseleccionada, 13);
String Rep_legal=(String) modelotabla.getValueAt(filaseleccionada, 14);
String cargo=(String) modelotabla.getValueAt(filaseleccionada, 15);
String domicilio=(String) modelotabla.getValueAt(filaseleccionada, 16);
String materia=(String) modelotabla.getValueAt(filaseleccionada, 17);
String relacion=(String) modelotabla.getValueAt(filaseleccionada, 18);
String recomen=(String) modelotabla.getValueAt(filaseleccionada, 19);
String resu=(String) modelotabla.getValueAt(filaseleccionada, 20);
String rut1=(String) modelotabla.getValueAt(filaseleccionada, 21);
String nombe1=(String) modelotabla.getValueAt(filaseleccionada, 22);
String direcc1=(String) modelotabla.getValueAt(filaseleccionada, 23);
mNume.setText(nume);
mOrigen.setSelectedItem(origen);
mRut.setText(rut);
mNombre.setText(nombre);
mPaterno.setText(paterno);
mMaterno.setText(materno);
mDireccion.setText(direccion);
mPoblacion.setText(poblacion);
mSexo.setSelectedItem(sexo);
mFecha.setText(fecha);
mFono.setText(fono);
mCelular.setText(celular);
mDeriva.setSelectedItem(deriva);
mNombre_deriva.setText(Nombre_deriva);
mRep_legal.setText(Rep_legal);
mCargo.setText(cargo);
mDomicilio.setText(domicilio);
mMateria.setSelectedItem(materia);
mRelacion.setText(relacion);
mRecomen.setText(recomen);
resultado.setText(resu);
mRu1.setText(rut1);
mNo1.setText(nombe1);
mDi1.setText(direcc1);
Saludos.
Enrique Ruiz
Stgo. de Chile
Hola a Todos.
Como puedo visualizar en un combobox un dato de un Jtable.
Lo que pasa es que desde un jTable puedo visualizar en un textfields los archivos seleccionados desde un jTable, pero los de un combobox no se pueden visualizar.
Muchas gracias quien pueda ayudarme.
Saludos.