elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  llenar un jcombobox usando el método set - get de una clase
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: llenar un jcombobox usando el método set - get de una clase  (Leído 2,902 veces)
jorgecotrinax

Desconectado Desconectado

Mensajes: 26



Ver Perfil
llenar un jcombobox usando el método set - get de una clase
« en: 25 Septiembre 2021, 20:15 pm »

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 Desconectado

Mensajes: 1.186


(e -> λ("live now")); tatuar -> λ("α");


Ver Perfil WWW
Re: llenar un jcombobox usando el método set - get de una clase
« Respuesta #1 en: 25 Septiembre 2021, 22:53 pm »

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

Código
  1. class Trabajador {
  2.    private String nombre;
  3.    private String apellido;
  4.    private String correo;
  5.  
  6.    public String getNombre() {
  7.        return nombre;
  8.    }
  9.  
  10.    public void setNombre(String nombre) {
  11.        this.nombre = nombre;
  12.    }
  13.  
  14.    public String getApellido() {
  15.        return apellido;
  16.    }
  17.  
  18.    public void setApellido(String apellido) {
  19.        this.apellido = apellido;
  20.    }
  21.  
  22.    public String getCorreo() {
  23.        return correo;
  24.    }
  25.  
  26.    public void setCorreo(String correo) {
  27.        this.correo = correo;
  28.    }
  29.  
  30.    @Override
  31.    public String toString() {
  32.        final StringBuilder sb = new StringBuilder();
  33.        sb.append(this.nombre);
  34.        return sb.toString();
  35.    }
  36. }
  37.  

Código
  1.  
  2. /**
  3.  * @author rubn
  4.  */
  5. public class FillJComboBoxWithJTextFields extends JFrame {
  6.  
  7.    private JTextField textField = new JTextField();
  8.    private JTextField textField2 = new JTextField();
  9.    private JTextField textField3 = new JTextField();
  10.  
  11.    private JLabel labelNombre = new JLabel("Insertar Nombre", SwingConstants.LEFT);
  12.    private JLabel labelApellido = new JLabel("Insertar Apellido", SwingConstants.LEFT);
  13.    private JLabel labelCorreo = new JLabel("Insertar Correo", SwingConstants.LEFT);
  14.  
  15.    private JComboBox<Trabajador> jComboBox = new JComboBox<>();
  16.    private JButton button = new JButton("Llenar JComboBox");
  17.    private JButton limpiar = new JButton("Limpiar todo");
  18.    private JPanel jPanel = new JPanel();
  19.  
  20.    public FillJComboBoxWithJTextFields() {
  21.        jPanel.setLayout(new BoxLayout(jPanel, BoxLayout.Y_AXIS));
  22.        super.add(jPanel);
  23.        jPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
  24.        jPanel.add(this.leftJLabel(this.labelNombre));
  25.        jPanel.add(textField);
  26.        jPanel.add(Box.createVerticalStrut(10));
  27.        jPanel.add(this.leftJLabel(this.labelApellido));
  28.        jPanel.add(textField2);
  29.        jPanel.add(Box.createVerticalStrut(10));
  30.        jPanel.add(this.leftJLabel(this.labelCorreo));
  31.        jPanel.add(textField3);
  32.        jPanel.add(Box.createVerticalStrut(10));
  33.        jPanel.add(this.jComboBox);
  34.        jPanel.add(Box.createVerticalStrut(10));
  35.  
  36.        JPanel jPanelHorizontal = new JPanel();
  37.        jPanelHorizontal.add(this.button);
  38.        jPanelHorizontal.add(this.limpiar);
  39.        jPanel.add(jPanelHorizontal);
  40.  
  41.        Stream.of(button, limpiar)
  42.                .forEach(buttons -> buttons.setBorderPainted(false));
  43.  
  44.        super.pack();
  45.        super.setLocationRelativeTo(null);
  46.        super.setVisible(true);
  47.        super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  48.        this.initBehaviour();
  49.    }
  50.  
  51.    /**
  52.      * * Comportamiento del boton donde se extraen los valores de los JTextField
  53.      * * También listener del botón de limpieza
  54.      */
  55.    private void initBehaviour() {
  56.        this.button.addActionListener((ActionEvent event) -> {
  57.            String nombre = textField.getText().trim();
  58.            String apellido = textField2.getText().trim();
  59.            String correo = textField3.getText().trim();
  60.            if (Stream.of(nombre, apellido, correo)
  61.                    .noneMatch(String::isEmpty)) {
  62.                final Trabajador trabajador = new Trabajador();
  63.                trabajador.setNombre(nombre);
  64.                trabajador.setApellido(apellido);
  65.                trabajador.setCorreo(correo);
  66.                this.jComboBox.addItem(trabajador);
  67.            } else {
  68.                JOptionPane.showMessageDialog(this,"Llenar todos los inputs",
  69.                        "Error", JOptionPane.ERROR_MESSAGE);
  70.            }
  71.        });
  72.  
  73.        this.limpiar.addActionListener((ActionEvent event) -> {
  74.            this.jComboBox.removeAllItems();
  75.            Stream.of(textField, textField2, textField3)
  76.                    .forEach(text -> {
  77.                        text.setText("");
  78.                    });
  79.        });
  80.  
  81.    }
  82.  
  83.    private JPanel leftJLabel(final JLabel jLabel) {
  84.       final JPanel panel = new JPanel(new BorderLayout());
  85.        panel.add(jLabel, BorderLayout.LINE_START);
  86.        return panel;
  87.    }
  88.  
  89.    public static void main(String[] args) {
  90.        new Thread(FillJComboBoxWithJTextFields::new).start();
  91.    }
  92. }
  93.  



« Última modificación: 27 Septiembre 2021, 15:59 pm por rub'n » En línea



rubn0x52.com KNOWLEDGE  SHOULD BE FREE!!!
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen
jorgecotrinax

Desconectado Desconectado

Mensajes: 26



Ver Perfil
Re: llenar un jcombobox usando el método set - get de una clase
« Respuesta #2 en: 27 Septiembre 2021, 21:17 pm »

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 Desconectado

Mensajes: 1.186


(e -> λ("live now")); tatuar -> λ("α");


Ver Perfil WWW
Re: llenar un jcombobox usando el método set - get de una clase
« Respuesta #3 en: 27 Septiembre 2021, 22:20 pm »

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

Código
  1. /**
  2.  * @author rubn
  3.  */
  4. public class FillJComboBoxWithJTextFields extends JFrame {
  5.  
  6.    private JTextField textField = new JTextField();
  7.    private JTextField textField2 = new JTextField();
  8.    private JTextField textField3 = new JTextField();
  9.  
  10.    private JLabel labelNombre = new JLabel("Agregar Nombre", SwingConstants.LEFT);
  11.    private JLabel labelApellido = new JLabel("Agregar Apellido", SwingConstants.LEFT);
  12.    private JLabel labelCorreo = new JLabel("Agregar Correo", SwingConstants.LEFT);
  13.  
  14.    private JButton button = new JButton("Insertar");
  15.    private JButton limpiar = new JButton("Limpiar todo");
  16.    private JPanel jPanelFormulario = new JPanel();
  17.    private JInternalFrame jInternalFrame = new JInternalFrame();
  18.    private FrTrabajadores jInternalFrame2 = new FrTrabajadores();
  19.    private final JDesktopPane jDesktopPane = new JDesktopPane();
  20.  
  21.    public FillJComboBoxWithJTextFields() {
  22.        super.setTitle("Fill JComboBox");
  23.  
  24.        super.pack();
  25.        super.setSize(650, 420);
  26.        super.setLocationRelativeTo(null);
  27.        super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  28.        super.setVisible(true);
  29.  
  30.        this.initBehaviour();
  31.        this.configureJInternalFrames();
  32.  
  33.    }
  34.  
  35.    private void configureJInternalFrames() {
  36.  
  37.        jPanelFormulario.setLayout(new BoxLayout(jPanelFormulario, BoxLayout.Y_AXIS));
  38.        jPanelFormulario.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
  39.        jPanelFormulario.add(leftJLabel(this.labelNombre));
  40.        jPanelFormulario.add(textField);
  41.        jPanelFormulario.add(Box.createVerticalStrut(10));
  42.        jPanelFormulario.add(leftJLabel(this.labelApellido));
  43.        jPanelFormulario.add(textField2);
  44.        jPanelFormulario.add(Box.createVerticalStrut(10));
  45.        jPanelFormulario.add(leftJLabel(this.labelCorreo));
  46.        jPanelFormulario.add(textField3);
  47.        jPanelFormulario.add(Box.createVerticalStrut(10));
  48.  
  49.        JPanel jPanelHorizontal = new JPanel();
  50.        jPanelHorizontal.add(this.button);
  51.        jPanelHorizontal.add(this.limpiar);
  52.        jPanelFormulario.add(jPanelHorizontal);
  53.  
  54.        Stream.of(button, limpiar)
  55.                .forEach(buttons -> buttons.setBorderPainted(false));
  56.  
  57.        this.jInternalFrame.add(this.jPanelFormulario);
  58.  
  59.        jInternalFrame.setSize(new Dimension(300, 250));
  60.        jInternalFrame.setIconifiable(true);
  61.        jInternalFrame.setVisible(true);
  62.  
  63.        jDesktopPane.add(this.jInternalFrame);
  64.        jDesktopPane.add(this.jInternalFrame2);
  65.        jDesktopPane.setSize(new Dimension(500, 600));
  66.        super.add(jDesktopPane, BorderLayout.CENTER);
  67.    }
  68.  
  69.    /**
  70.      * * Comportamiento del boton donde se extraen los valores de los JTextField
  71.      * * También listener del botón de limpieza
  72.      */
  73.    private void initBehaviour() {
  74.        this.button.addActionListener((ActionEvent event) -> {
  75.  
  76.            String nombre = textField.getText().trim();
  77.            String apellido = textField2.getText().trim();
  78.            String correo = textField3.getText().trim();
  79.            if (Stream.of(nombre, apellido, correo)
  80.                    .noneMatch(String::isEmpty)) {
  81.                final Trabajador trabajador = new Trabajador();
  82.                trabajador.setNombre(nombre);
  83.                trabajador.setApellido(apellido);
  84.                trabajador.setCorreo(correo);
  85.                this.jInternalFrame2.getjComboBox().addItem(trabajador);
  86.            } else {
  87.                JOptionPane.showMessageDialog(this, "Llenar todos los inputs",
  88.                        "Error", JOptionPane.ERROR_MESSAGE);
  89.            }
  90.  
  91.        });
  92.  
  93.        this.limpiar.addActionListener((ActionEvent event) -> {
  94.            this.jInternalFrame2.getjComboBox().removeAllItems();
  95.            Stream.of(textField, textField2, textField3)
  96.                    .forEach((JTextField jTextField) -> jTextField.setText(""));
  97.        });
  98.  
  99.    }
  100.  
  101.    public static JPanel leftJLabel(final JLabel jLabel) {
  102.        final JPanel panel = new JPanel(new BorderLayout());
  103.        panel.add(jLabel, BorderLayout.LINE_START);
  104.        return panel;
  105.    }
  106.  
  107.    public static void main(String[] args) {
  108.        try {
  109.            UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
  110.        }
  111.        new Thread(FillJComboBoxWithJTextFields::new).start();
  112.    }
  113. }

JInternalFrame de Trabajadores

Código
  1. package com.forotest;
  2.  
  3. import javax.swing.*;
  4. import java.awt.*;
  5.  
  6. /**
  7.  * @author rubn
  8.  */
  9. public class FrTrabajadores extends JInternalFrame {
  10.    private JComboBox<Trabajador> jComboBox = new JComboBox<>();
  11.    private JPanel panel = new JPanel();
  12.    private JLabel jLabel = new JLabel("Trabajadores");
  13.  
  14.    public FrTrabajadores() {
  15.        panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
  16.        panel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
  17.        panel.add(FillJComboBoxWithJTextFields.leftJLabel(this.jLabel));
  18.        panel.add(Box.createVerticalStrut(10));
  19.        panel.add(this.jComboBox);
  20.        super.add(panel);
  21.        super.setIconifiable(true);
  22.        super.setVisible(true);
  23.        super.setBounds(320,0,0,0);
  24.        super.setSize(new Dimension(300,100));
  25.    }
  26.  
  27.    public JComboBox<Trabajador> getjComboBox() {
  28.        return jComboBox;
  29.    }
  30. }
  31.  



« Última modificación: 28 Septiembre 2021, 02:04 am por rub'n » En línea



rubn0x52.com KNOWLEDGE  SHOULD BE FREE!!!
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen
jorgecotrinax

Desconectado Desconectado

Mensajes: 26



Ver Perfil
Re: llenar un jcombobox usando el método set - get de una clase
« Respuesta #4 en: 28 Septiembre 2021, 03:12 am »

Es un JInternalFrameForm

Ese es el formulario en el que iingreso los trabajadores ...




-> dejare el zoom abierto : https://utpvirtual.zoom.us/j/89182665033?pwd=eGJIQTdVcFFHWHBlaHR2WU9wdFJaUT09
En línea

rub'n


Desconectado Desconectado

Mensajes: 1.186


(e -> λ("live now")); tatuar -> λ("α");


Ver Perfil WWW
Re: llenar un jcombobox usando el método set - get de una clase
« Respuesta #5 en: 28 Septiembre 2021, 06:24 am »

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.

Código
  1. import javax.swing.*;
  2. import java.awt.*;
  3.  
  4. public class ComboRenderer extends DefaultListCellRenderer {
  5.  
  6.    @Override
  7.    public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
  8.        if (value instanceof Trabajador) {
  9.            Trabajador trabajador = (Trabajador) value;
  10.            setText(trabajador.getNombre());
  11.        }
  12.        return this;
  13.    }
  14.  
  15. }

Código
  1. jComboBox.setRenderer(new ComboRenderer());

Entonces tu @toString() quedaria normal, y el combo tendria el mismo comportamiento que el anterior pero mejor, mas pulcro asi.

Código
  1. @Override
  2.    public String toString() {
  3.        final StringBuilder sb = new StringBuilder("\nTrabajador");
  4.        sb.append("\nnombre='").append(nombre).append("\n");
  5.        sb.append(", apellido='").append(apellido).append("\n");
  6.        sb.append(", correo='").append(correo).append("\n");
  7.        sb.append("]");
  8.        return sb.toString();
  9.    }
  10.  
« Última modificación: 28 Septiembre 2021, 19:18 pm por rub'n » En línea



rubn0x52.com KNOWLEDGE  SHOULD BE FREE!!!
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen
jorgecotrinax

Desconectado Desconectado

Mensajes: 26



Ver Perfil
Re: llenar un jcombobox usando el método set - get de una clase
« Respuesta #6 en: 1 Octubre 2021, 21:47 pm »

Gracias por ayudarme eres un crack  :D  ;-) ;-) ;-) ;-)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines