Autor
|
Tema: llenar un jcombobox usando el método set - get de una clase (Leído 5,586 veces)
|
jorgecotrinax
Desconectado
Mensajes: 28
|
tengo 2 formularios y una clase
en la clase trabajador se ingresa su nombre usado set y get
el formulario 1 ingresa trabajadores usando el método set
en el formulario 2 quiero que en el jcombobox aparezcan los nombres que inserte en e formulario 1
|
|
|
En línea
|
|
|
|
rub'n
Desconectado
Mensajes: 1.217
(e -> λ("live now")); tatuar -> λ("α");
|
en el formulario 2 quiero que en el jcombobox aparezcan los nombres que inserte en e formulario 1
El Formulario uno tienes JTextfields ? Debes obtener los valores de esos campos de cada uno y luego llenar el JComboBox. Mira la linea 51 a 71, donde usamos los valores del JTextField para llenar el JComboBox, * Linea 57, 58, 59 el método getText() contiene el valor de el input o JTextField class Trabajador { return nombre; } public void setNombre (String nombre ) { this.nombre = nombre; } return apellido; } public void setApellido (String apellido ) { this.apellido = apellido; } return correo; } public void setCorreo (String correo ) { this.correo = correo; } @Override final StringBuilder sb = new StringBuilder(); sb.append(this.nombre); return sb.toString(); } }
/** * @author rubn */ public class FillJComboBoxWithJTextFields extends JFrame { private JComboBox<Trabajador> jComboBox = new JComboBox<>(); public FillJComboBoxWithJTextFields() { super.add(jPanel); jPanel. setBorder(BorderFactory. createEmptyBorder(10, 10, 10, 10)); jPanel.add(this.leftJLabel(this.labelNombre)); jPanel.add(textField); jPanel. add(Box. createVerticalStrut(10)); jPanel.add(this.leftJLabel(this.labelApellido)); jPanel.add(textField2); jPanel. add(Box. createVerticalStrut(10)); jPanel.add(this.leftJLabel(this.labelCorreo)); jPanel.add(textField3); jPanel. add(Box. createVerticalStrut(10)); jPanel.add(this.jComboBox); jPanel. add(Box. createVerticalStrut(10)); jPanelHorizontal.add(this.button); jPanelHorizontal.add(this.limpiar); jPanel.add(jPanelHorizontal); Stream.of(button, limpiar) .forEach(buttons -> buttons.setBorderPainted(false)); super.pack(); super.setLocationRelativeTo(null); super.setVisible(true); super. setDefaultCloseOperation(JFrame. EXIT_ON_CLOSE); this.initBehaviour(); } /** * * Comportamiento del boton donde se extraen los valores de los JTextField * * También listener del botón de limpieza */ private void initBehaviour() { String nombre = textField. getText(). trim(); String apellido = textField2. getText(). trim(); String correo = textField3. getText(). trim(); if (Stream.of(nombre, apellido, correo) . noneMatch(String::isEmpty )) { final Trabajador trabajador = new Trabajador(); trabajador.setNombre(nombre); trabajador.setApellido(apellido); trabajador.setCorreo(correo); this.jComboBox.addItem(trabajador); } else { JOptionPane. showMessageDialog(this, "Llenar todos los inputs", } }); this. limpiar. addActionListener((ActionEvent event ) -> { this.jComboBox.removeAllItems(); Stream.of(textField, textField2, textField3) .forEach(text -> { text.setText(""); }); }); } return panel; } public static void main (String[] args ) { new Thread(FillJComboBoxWithJTextFields ::new). start(); } }
|
|
« Última modificación: 27 Septiembre 2021, 15:59 pm por rub'n »
|
En línea
|
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen ki
|
|
|
jorgecotrinax
Desconectado
Mensajes: 28
|
Amigo eres un crack enserio pero lo que busco es esto , perdón por no poner una imagen antes, no sabia como guardaré los datos del formulario en el que se encuentra jComboBox , para hacer otro formulario que me muestre trabajador vendió mas cual vendió menos -> usado la clase cliente guardare registro de mis clientes
|
|
« Última modificación: 27 Septiembre 2021, 21:26 pm por jorgecotrinax »
|
En línea
|
|
|
|
rub'n
Desconectado
Mensajes: 1.217
(e -> λ("live now")); tatuar -> λ("α");
|
Amigo eres un crack enserio pero lo que busco es esto , perdón por no poner una imagen antes, no sabia como guardaré los datos del formulario en el que se encuentra jComboBox , para hacer otro formulario que me muestre trabajador vendió mas cual vendió menos -> usado la clase cliente guardare registro de mis clientes Creo que tienes dos JInternalFrame o no? dentro de JFrame... - Puedes hacer que cada vez que insertes un trabajador almacenarlos en una Lista de trabajadores (por ejemplo) y pasar esa lista como parametro al otro JInternalFrame.
ya tienes un boton llamado insertar usalo. - Debes hacer un @Override del metodo @ToString() de la clase Trabajador. como te lo puse en el ejemplo, logrando que solo salga el nombre del trabajador en el JComboBox
- Los JInternaFrame deben hacer composicion de modo que cuando uses el boton insertar, llames a un metodo del JInternalFrame que contiene el JComboBox
/** * @author rubn */ public class FillJComboBoxWithJTextFields extends JFrame { private FrTrabajadores jInternalFrame2 = new FrTrabajadores(); public FillJComboBoxWithJTextFields() { super.setTitle("Fill JComboBox"); super.pack(); super.setSize(650, 420); super.setLocationRelativeTo(null); super. setDefaultCloseOperation(JFrame. EXIT_ON_CLOSE); super.setVisible(true); this.initBehaviour(); this.configureJInternalFrames(); } private void configureJInternalFrames() { jPanelFormulario. setBorder(BorderFactory. createEmptyBorder(10, 10, 10, 10)); jPanelFormulario.add(leftJLabel(this.labelNombre)); jPanelFormulario.add(textField); jPanelFormulario. add(Box. createVerticalStrut(10)); jPanelFormulario.add(leftJLabel(this.labelApellido)); jPanelFormulario.add(textField2); jPanelFormulario. add(Box. createVerticalStrut(10)); jPanelFormulario.add(leftJLabel(this.labelCorreo)); jPanelFormulario.add(textField3); jPanelFormulario. add(Box. createVerticalStrut(10)); jPanelHorizontal.add(this.button); jPanelHorizontal.add(this.limpiar); jPanelFormulario.add(jPanelHorizontal); Stream.of(button, limpiar) .forEach(buttons -> buttons.setBorderPainted(false)); this.jInternalFrame.add(this.jPanelFormulario); jInternalFrame. setSize(new Dimension(300, 250)); jInternalFrame.setIconifiable(true); jInternalFrame.setVisible(true); jDesktopPane.add(this.jInternalFrame); jDesktopPane.add(this.jInternalFrame2); jDesktopPane. setSize(new Dimension(500, 600)); } /** * * Comportamiento del boton donde se extraen los valores de los JTextField * * También listener del botón de limpieza */ private void initBehaviour() { String nombre = textField. getText(). trim(); String apellido = textField2. getText(). trim(); String correo = textField3. getText(). trim(); if (Stream.of(nombre, apellido, correo) . noneMatch(String::isEmpty )) { final Trabajador trabajador = new Trabajador(); trabajador.setNombre(nombre); trabajador.setApellido(apellido); trabajador.setCorreo(correo); this.jInternalFrame2.getjComboBox().addItem(trabajador); } else { JOptionPane. showMessageDialog(this, "Llenar todos los inputs", } }); this. limpiar. addActionListener((ActionEvent event ) -> { this.jInternalFrame2.getjComboBox().removeAllItems(); Stream.of(textField, textField2, textField3) . forEach((JTextField jTextField ) -> jTextField. setText("")); }); } return panel; } public static void main (String[] args ) { try { UIManager. setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel"); } new Thread(FillJComboBoxWithJTextFields ::new). start(); } }
JInternalFrame de Trabajadorespackage com.forotest; import javax.swing.*; import java.awt.*; /** * @author rubn */ private JComboBox<Trabajador> jComboBox = new JComboBox<>(); public FrTrabajadores() { panel. setBorder(BorderFactory. createEmptyBorder(10, 10, 10, 10)); panel.add(FillJComboBoxWithJTextFields.leftJLabel(this.jLabel)); panel. add(Box. createVerticalStrut(10)); panel.add(this.jComboBox); super.add(panel); super.setIconifiable(true); super.setVisible(true); super.setBounds(320,0,0,0); } public JComboBox<Trabajador> getjComboBox() { return jComboBox; } }
|
|
« Última modificación: 28 Septiembre 2021, 02:04 am por rub'n »
|
En línea
|
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen ki
|
|
|
|
rub'n
Desconectado
Mensajes: 1.217
(e -> λ("live now")); tatuar -> λ("α");
|
estuve viendo y la idea del @toString() con solo la variable de instancia nombre, no es buena idea. Es mejor renderizar lo que queramos en el combo, porque si necesitas ese toString en un futuro pues listo. import javax.swing.*; import java.awt.*; @Override public Component getListCellRendererComponent (JList <?> list, Object value, int index, boolean isSelected, boolean cellHasFocus ) { if (value instanceof Trabajador) { Trabajador trabajador = (Trabajador) value; setText(trabajador.getNombre()); } return this; } }
jComboBox.setRenderer(new ComboRenderer());
Entonces tu @toString() quedaria normal, y el combo tendria el mismo comportamiento que el anterior pero mejor, mas pulcro asi. @Override final StringBuilder sb = new StringBuilder("\nTrabajador"); sb.append("\nnombre='").append(nombre).append("\n"); sb.append(", apellido='").append(apellido).append("\n"); sb.append(", correo='").append(correo).append("\n"); sb.append("]"); return sb.toString(); }
|
|
« Última modificación: 28 Septiembre 2021, 19:18 pm por rub'n »
|
En línea
|
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen ki
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
JAVA y MySQL-Llenar un JComboBox con datos textual, pero tomar su valor numérico
Java
|
luisalb
|
3
|
14,010
|
25 Septiembre 2008, 22:05 pm
por juancho77
|
|
|
Como sobre-escribir un método de una clase base en una clase heredada?
Programación C/C++
|
julian21931500
|
5
|
3,515
|
25 Febrero 2015, 23:49 pm
por ivancea96
|
|
|
llenar list(of oracleparameter) a partir de una clase
.NET (C#, VB.NET, ASP)
|
d91
|
2
|
2,743
|
21 Septiembre 2015, 15:39 pm
por d91
|
|
|
(JS y PHP) no puedo ejecutar metodo de clase JS atraves de metodo de clase PHP
PHP
|
noob2012
|
2
|
3,242
|
7 Enero 2017, 22:27 pm
por noob2012
|
|
|
Como llenar campos (jtextfield) a través de un jcombobox | uso de métodos set y get
Java
|
jorgecotrinax
|
4
|
4,428
|
1 Octubre 2021, 21:48 pm
por jorgecotrinax
|
|