Autor Tema: ejemplo sencillo interfaz gráfica GUI Java JTextField JSpinner JButt #codigoJava  (Leído 3062 veces)

Raquel

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 6
    • Ver Perfil
Hola, mi duda es cómo puedo llamar un método de instancia calcular sueldo semanal en la GUI, agradezo ayuda.

Código:

Código: [Seleccionar]
public class EmpleadoPorHora extends Empleado {
    private int hora;
   
    //Constructor

    public EmpleadoPorHora(int hora, String nombre, String apellido, String numeroSeguro) {
        super(nombre, apellido, numeroSeguro);
        this.hora = hora;
    }
    //metodo
    public double calcularSueldoSemanalPOrHora(){
        double valorHora=3.50;
        double sueldo;
        sueldo= valorHora*hora;   
        return sueldo;
       
    }
    @Override
   public String toString(){
       return super.toString()+this.hora;
   }
         
           
}
« Última modificación: 13 de Abril 2022, 18:42 por Alex Rodríguez »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 989
    • Ver Perfil
Hola.

Se supone que en la GUI, tendrás o podrás crear un objeto EmpleadoPorHora con los datos que recojas de la interfaz.
Una vez creado, puedes llamar a su método y mostrar su resultado en un JLabel, o un JTextField, o donde quieras...

No se como has diseñado tu GUI, pero suponiendo que tengas unos campos de texto y un botón para solicitar la acción de calcular sueldo, será en el código del ActionListener de este botón donde se crea el empleado, se calcula el sueldo y se muestra.

Dejo un ejemplo muy rápido y sencillo a continuación.
Fíjate que en la clase ActionListener es donde se hace la creación del empleado, calculo de sueldo y publicación en un JLabel de la GUI.


Código: [Seleccionar]
public class EjemploGUI extends JFrame{

private JTextField jtNombre;
private JTextField jtApellido;
private JTextField jtNumSeguro;
private JSpinner jsHoras;
private JLabel jlSueldo;
private JButton btCalcular;

public EjemploGUI() {
iniciarComponentes();

setLayout(new BorderLayout());
add(new PanelCentral(), BorderLayout.CENTER);
add(new PanelSur(), BorderLayout.SOUTH);

setTitle("Ejemplo Empleado");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setLocationRelativeTo(null);
setVisible(true);
}

private void iniciarComponentes() {
jtNombre = new JTextField(10);
jtApellido = new JTextField(10);
jtNumSeguro = new JTextField(10);
jsHoras = new JSpinner(new SpinnerNumberModel(10,1,Integer.MAX_VALUE,1));
jsHoras.setPreferredSize(new Dimension(60,20));
jlSueldo = new JLabel();
jlSueldo.setForeground(Color.BLUE);
btCalcular = new JButton("Calcular Sueldo");
btCalcular.addActionListener(new AccionCalcular());
}

private class PanelComponente extends JPanel {
public PanelComponente(JComponent componente, int flotacion) {
setLayout(new FlowLayout(flotacion));
add(componente);
}
}

private class PanelCentral extends JPanel {

public PanelCentral() {
setLayout(new GridLayout(5,2,8,4));
add(new PanelComponente(new JLabel("Nombre:"), FlowLayout.RIGHT));
add(new PanelComponente(jtNombre, FlowLayout.LEFT));
add(new PanelComponente(new JLabel("Apellidos:"), FlowLayout.RIGHT));
add(new PanelComponente(jtApellido, FlowLayout.LEFT));
add(new PanelComponente(new JLabel("Nº Seguro:"), FlowLayout.RIGHT));
add(new PanelComponente(jtNumSeguro, FlowLayout.LEFT));
add(new PanelComponente(new JLabel("Horas:"), FlowLayout.RIGHT));
add(new PanelComponente(jsHoras, FlowLayout.LEFT));
add(new PanelComponente(new JLabel("Sueldo:"), FlowLayout.RIGHT));
add(new PanelComponente(jlSueldo, FlowLayout.LEFT));

setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createEmptyBorder(20, 25, 10, 25),
BorderFactory.createRaisedSoftBevelBorder()));
}
}

private class PanelSur extends JPanel {

public PanelSur() {
add(btCalcular);
setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createEmptyBorder(10, 25, 20, 25),
BorderFactory.createLoweredSoftBevelBorder()));
}
}

private class AccionCalcular implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
//Capturamos datos para crear empleado, obviando validaciones previas por ser un ejemplo
var empleado = new EmpleadoPorHora(jtNombre.getText(), jtApellido.getText(),
jtNumSeguro.getText(), (int)jsHoras.getValue());
//Calculamos y mostramos sueldo en la GUI
Double sueldo = empleado.calcularSueldoSemanalPorHora();
jlSueldo.setText(sueldo.toString());
}
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new EjemploGUI();
}
});
}
}

En pantalla tenemos una interfaz para meter datos y calcular el sueldo mediante el botón de acción.
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

Raquel

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 6
    • Ver Perfil
Gracias, verás, creé un objeto pero no me permite llamar

Código


Clase Padre Empleado

Código: [Seleccionar]
//clase Padre
public class Empleado {

   
    protected String nombre;
    protected String apellido;
    protected int numeroSeguro;
   
    //constructor

    public Empleado(String nombre, String apellido, int numeroSeguro) {
        this.nombre = nombre;
        this.apellido = apellido;
        this.numeroSeguro = numeroSeguro;
    }
    //metodos gett and setter

   public Empleado(){
       
   }

 

   

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getApellido() {
        return apellido;
    }

    public void setApellido(String apellido) {
        this.apellido = apellido;
    }

    public int getNumeroSeguro() {
        return numeroSeguro;
    }

    public void setNumeroSeguro(int numeroSeguro) {
        this.numeroSeguro = numeroSeguro;
    }
 
    @Override
    public String toString(){
       return this.nombre+"-"+this.apellido+"-"+this.numeroSeguro;
    }
   
   
}


Clase hija 1 EmpleadoPorHora

Código: [Seleccionar]
//Clase hija
public class EmpleadoPorHora extends Empleado {
    private int hora;
   
    //Constructor

    public EmpleadoPorHora(int hora, String nombre, String apellido, int numeroSeguro) {
        super(nombre, apellido, numeroSeguro);
        this.hora = hora;
    }

public EmpleadoPorHora() {
   
}   
    //metodo
    public double calcularSueldoSemanalPOrHora(){
        double valorHora=3.50;
        double sueldo;
        sueldo= valorHora*hora;   
        return sueldo;
       
    }
    @Override
   public String toString(){
       return super.toString()+this.hora;
   }
         
           
}


Clase hija 2 EmpleadoPorComision

Código: [Seleccionar]
//Clase Hija
public class EmpleadoPorComision extends Empleado {
  private double venta; 
//Constructor

    public EmpleadoPorComision(double venta, String nombre, String apellido, int numeroSeguro) {
        super(nombre, apellido, numeroSeguro);
        this.venta = venta;
    }
    public EmpleadoPorComision(){
       
    }
  //metodo para calcular la comision
    public double calcularComision(){
        double comision;
        double sueldoSemanal=170;
        comision=sueldoSemanal+(0.20*venta);
      return comision;
    }
  @Override
  public String toString(){
      return super.toString()+this.venta;
     
  }
}


Clase Gui

Código: [Seleccionar]
//Gui
public class GUIEmpleado extends javax.swing.JFrame {
    Empleado e1;
//    Empleado e2 = new EmpleadoPorHora();
//    Empleado e3 =new EmpleadoPorComision();
   
   

    /**
     * Creates new form GUIEmpleado
     */
    public GUIEmpleado() {
        initComponents();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                         
    private void initComponents() {

        pnlDatos = new javax.swing.JPanel();
        lblNombre = new javax.swing.JLabel();
        lblApellido = new javax.swing.JLabel();
        lblNumerodeSeguro = new javax.swing.JLabel();
        txtNombre = new javax.swing.JTextField();
        txtApellido = new javax.swing.JTextField();
        txtNumerodeSeguro = new javax.swing.JTextField();
        btnGuardar = new javax.swing.JButton();
        jLabel1 = new javax.swing.JLabel();
        txtVenta = new javax.swing.JTextField();
        txtHoraTrabajadas = new javax.swing.JTextField();
        jLabel2 = new javax.swing.JLabel();
        jScrollPane1 = new javax.swing.JScrollPane();
        txaInformacion = new javax.swing.JTextArea();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        pnlDatos.setBorder(javax.swing.BorderFactory.createTitledBorder("Datos"));

        lblNombre.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        lblNombre.setForeground(new java.awt.Color(255, 102, 255));
        lblNombre.setText("Nombre");

        lblApellido.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        lblApellido.setForeground(new java.awt.Color(255, 51, 255));
        lblApellido.setText("Apellido");

        lblNumerodeSeguro.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        lblNumerodeSeguro.setForeground(new java.awt.Color(255, 51, 204));
        lblNumerodeSeguro.setText("Número de Seguro");

        btnGuardar.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
        btnGuardar.setForeground(new java.awt.Color(153, 0, 153));
        btnGuardar.setText("Guardar");
        btnGuardar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnGuardarActionPerformed(evt);
            }
        });

        jLabel1.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        jLabel1.setForeground(new java.awt.Color(255, 102, 204));
        jLabel1.setText("Venta");

        jLabel2.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        jLabel2.setForeground(new java.awt.Color(255, 0, 204));
        jLabel2.setText("Horas Trabajadas");

        javax.swing.GroupLayout pnlDatosLayout = new javax.swing.GroupLayout(pnlDatos);
        pnlDatos.setLayout(pnlDatosLayout);
        pnlDatosLayout.setHorizontalGroup(
            pnlDatosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlDatosLayout.createSequentialGroup()
                .addGroup(pnlDatosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlDatosLayout.createSequentialGroup()
                        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(btnGuardar, javax.swing.GroupLayout.PREFERRED_SIZE, 128, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addGroup(pnlDatosLayout.createSequentialGroup()
                        .addGap(18, 18, 18)
                        .addGroup(pnlDatosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(lblNumerodeSeguro, javax.swing.GroupLayout.PREFERRED_SIZE, 123, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addGroup(pnlDatosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                .addComponent(lblNombre, javax.swing.GroupLayout.DEFAULT_SIZE, 74, Short.MAX_VALUE)
                                .addComponent(lblApellido, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                            .addComponent(jLabel2)
                            .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 93, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 202, Short.MAX_VALUE)))
                .addGroup(pnlDatosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(txtApellido, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 90, Short.MAX_VALUE)
                    .addComponent(txtNombre, javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(txtNumerodeSeguro, javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(txtVenta, javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(txtHoraTrabajadas, javax.swing.GroupLayout.Alignment.TRAILING))
                .addGap(22, 22, 22))
        );
        pnlDatosLayout.setVerticalGroup(
            pnlDatosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlDatosLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(pnlDatosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lblNombre)
                    .addComponent(txtNombre, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(pnlDatosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lblApellido)
                    .addComponent(txtApellido, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(pnlDatosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lblNumerodeSeguro)
                    .addComponent(txtNumerodeSeguro, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(pnlDatosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(txtVenta, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel1))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 18, Short.MAX_VALUE)
                .addGroup(pnlDatosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(txtHoraTrabajadas, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel2))
                .addGap(18, 18, 18)
                .addComponent(btnGuardar)
                .addContainerGap())
        );

        txaInformacion.setColumns(20);
        txaInformacion.setRows(5);
        jScrollPane1.setViewportView(txaInformacion);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(28, 28, 28)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(pnlDatos, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 472, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(322, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(36, 36, 36)
                .addComponent(pnlDatos, 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, 132, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>                       

    private void btnGuardarActionPerformed(java.awt.event.ActionEvent evt) {                                           
        // TODO add your handling code here:
         
       int numSeguro=Integer.parseInt(txtNumerodeSeguro.getText());
        e1=new Empleado(txtNombre.getText(), txtApellido.getText(),numSeguro);//En esta línea quiero llamar al metdo calcularsueldoSemanal

        txaInformacion.setText(e1.toString());
       
   
    }                                         

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(GUIEmpleado.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(GUIEmpleado.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(GUIEmpleado.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(GUIEmpleado.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new GUIEmpleado().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JButton btnGuardar;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JLabel lblApellido;
    private javax.swing.JLabel lblNombre;
    private javax.swing.JLabel lblNumerodeSeguro;
    private javax.swing.JPanel pnlDatos;
    private javax.swing.JTextArea txaInformacion;
    private javax.swing.JTextField txtApellido;
    private javax.swing.JTextField txtHoraTrabajadas;
    private javax.swing.JTextField txtNombre;
    private javax.swing.JTextField txtNumerodeSeguro;
    private javax.swing.JTextField txtVenta;
    // End of variables declaration                   
}
« Última modificación: 13 de Abril 2022, 18:47 por Alex Rodríguez »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 989
    • Ver Perfil
Bufff... nunca me acostumbraré a las GUI autogeneradas por NetBeans, cientos de líneas de código que solo una máquina entiende... para hacer lo que se podría hacer con unas decenas de líneas legibles y escritas por un ser humano.


A ver, creo que el problema es que usas un objeto Empleado

Citar
public class GUIEmpleado extends javax.swing.JFrame {
    Empleado e1;

Citar
private void btnGuardarActionPerformed(java.awt.event.ActionEvent evt) {                                           
        // TODO add your handling code here:
         
       int numSeguro=Integer.parseInt(txtNumerodeSeguro.getText());
        e1=new Empleado(txtNombre.getText(), txtApellido.getText(),numSeguro);//En esta línea quiero llamar al metdo calcularsueldoSemanal

        txaInformacion.setText(e1.toString());
       
   
    }

La clase Empleado no tiene ningún método calcularSueldoSemanalPorHora()

Es método corresponde a la clase hija EmpleadoPorHora
Así que esa es la clase que tienes que instanciar:

Citar
public class GUIEmpleado extends javax.swing.JFrame {
    EmpleadoPorHora e1;

Citar
private void btnGuardarActionPerformed(java.awt.event.ActionEvent evt) {                                           
        // TODO add your handling code here:
         
       int numSeguro=Integer.parseInt(txtNumerodeSeguro.getText());
        e1=new EmpleadoPorHora(txtNombre.getText(), txtApellido.getText(),numSeguro);//En esta línea quiero llamar al metdo calcularsueldoSemanal

        txaInformacion.setText(e1.toString());
       
   
    }
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".