Foro de elhacker.net

Programación => Java => Mensaje iniciado por: kapotnt en 25 Agosto 2008, 03:11 am



Título: Ayuda con un jButton
Publicado por: kapotnt en 25 Agosto 2008, 03:11 am
Buenas, he empezado a crear interfaces gráficas en java hace unos días y me he atascado en algo que para casi todos os resultará una tontería pero no llego a entender bien como hacer que un jButton ejecute un método de su propia clase.
El programa consiste en una serie de TextField que rellenas con una serie de datos y mi intencion es que al pulsar el botón "recoja" esos datos, los procese y finalmente los imprima en otros textfield (inicialmente vacíos). Lo que he hecho para ello es crear un método que se encargará de procesar los datos y rellenar los textfield finales con los cálculos obtenidos entonces necesito que al dar al botón "Calcular" invoque ese método, he mirado por internet durante 3 días y no he sido capaz, muchas gracias!


Título: Re: Ayuda con un jButton
Publicado por: -Ramc- en 25 Agosto 2008, 03:27 am
Código:
boton.addActionListener(new ActionListener() {
      actionPerformed(ActionEvent ev) {
                 //lo que hace el boton llamadas a metodos o lo que quieras
     }
});

Deberas importar java.awt.event.*

Lee un poco acerca de eventos.


Título: Re: Ayuda con un jButton
Publicado por: kapotnt en 25 Agosto 2008, 12:45 pm
Si pongo eso me da error en todas las lineas:

button1.addActionListener (new ActionListener() {  //package button doesn't exist
         actionPerformed (ActionEvent ev) { //cannot find symbol ; y ) expected
          calcularG(); // no da error
      }
});

gracias de nuevo


Título: Re: Ayuda con un jButton
Publicado por: ~~ en 25 Agosto 2008, 14:41 pm
http://www.chuidiang.com/java/novatos/hola_mundo_swing.php


Título: Re: Ayuda con un jButton
Publicado por: sapito169 en 26 Agosto 2008, 07:22 am
bueno la unica razón por la que no te salga es que pones el codigo en cualquier parte
se siguen varias reglas para trabajar en una clase y tu con toda seguridad te as equicoda en una

las clases tiene un metodo llamado constructor el cual se aplica al instanciar la clase aca puedes poner procedimientos declarar varibles e instanciarlas

puedes reconocer un constructor por que es void(no devuelve ningun resultado) tiene el mismo nombre de la clase y no necesita decirle que es void

despues o antes del constructor ay metodos con cualquier nombre

Código:

class miclase{

//aca unicamente se pone variables y se les da algun valor
// es decir no agas ningun procedimineto
// seguramente a ca copiaste el codigo

//muy inportante: aca pones todas la variables que las vas a usar en cualquier otro //metodo

//en tu caso aca declaras que vas a usar un boton le dices cual es su nombre y lo //instancias si quieres eso depende de tu logica

JButon botonsito =new JButon();

miclase(){//este es el constructor con el mismo nombre de la clase

//aca hacemos el procedimiento que se nos de la gana
//aca puedes insertar ese codigo
}

void unmetodocualquiera(){//este es un metodo antes de su nombre esta void o
//el nombre de alguna clase


//aca tambien puedes pegar ese codigo

}
}


otra cosa inportante es que con cualquier ide(es un programa que te permite trabajar con codigos en el caso de java netbeans, Jdeveloper, eclipse,) te crea botonoes osea no te agas problemas(simplemente lo arrastras a tu ventana) y selecionas el boton y ases una operacion muy simple dependiendo del ide y te va a crear el metodo y te va a mandar a esa parte

a modo de resumen te mando el codigo completo echo en jdeveloper
ten encuenta que es exactamente lo mismo que te e explicado solo que el ide me
crea codigo en una forma diferente al resto de los ides pero el fundamentalmente simpre es exactamente lo mismo para cualquier programa en java o orientado a objetos



Código:

import java.awt.Dimension;

import java.awt.Rectangle;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;


public class Frame1 extends JFrame{
    JButton jButton1=new JButton();
   
   
    public Frame1(){//este es el constructor
        try{
           
            jbInit();
           
           
        }
        catch(Exception e){
            e.printStackTrace();
        }
    }

    private void jbInit() throws Exception{// este metodo va dentro del constructor osea que en la practica es lo mismo
        this.getContentPane().setLayout( null );
        this.setSize( new Dimension(400, 300) );
        jButton1.setText("jButton1");
        jButton1.setBounds(new Rectangle(70,85,125,40));
        jButton1.addActionListener(new ActionListener(){
                    public void actionPerformed(ActionEvent e){
                        //aca ba el codigo que se va a ejecutar al momento de pulsar
                        //el boton en este caso aplica un metodo
                        jButton1_actionPerformed(e);
                       
                    }
                });
        this.getContentPane().add(jButton1,null);

    }

// este metodo esta dentro de la accion de voton osea que se va a aplicar al machucar el boton
    private void jButton1_actionPerformed(ActionEvent e){
   
        JOptionPane.showMessageDialog(null,"mensaje al presinar el boton");
     
    }
   
    //este metodo es es el main(prinsipal) y siempre se llama de esa forma
    // esto es lo que en pseudocodigo es inicio
    //este metodo se ba a aplicar primero y simpre va en cualquier programa java
   
    public static void main(String args[]){
        JFrame frm=new Frame1();
        frm.setVisible(true);
        frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

con tu logica y tu estilo de programacion o tu ide si lo usas, lo puedes hacer diferente pero sienpre sigues las reglas que son para cualquier programa en java


Título: Re: Ayuda con un jButton
Publicado por: sapito169 en 26 Agosto 2008, 07:25 am
 :D :D :D :D :D :D :D

tu lo as copiada en donde no tenia ni el mas minimo sentido ponerlo despues del los imports

ai solo se pone que estas jalando codigos de otras partes
 :D :D :D :D :D


Título: Re: Ayuda con un jButton
Publicado por: CorazonValiente en 4 Septiembre 2008, 18:07 pm

import javax.swing.JOptionPane;
public class Main extends javax.swing.JFrame {

    public Main() {
        initComponents();
           
    }
    String []dato=new String[4];
   
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        jTextField1 = new javax.swing.JTextField();
        jTextField2 = new javax.swing.JTextField();
        jTextField3 = new javax.swing.JTextField();
        jTextField4 = new javax.swing.JTextField();
        Button1 = new javax.swing.JButton();
        Button2 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jPanel1.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));

        jLabel1.setText("Dato 1");

        jLabel2.setText("Dato 2");

        jLabel3.setText("Dato 3");

        jLabel4.setText("Dato 4");

        Button1.setText("Guardar");
        Button1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                Button1ActionPerformed(evt);
            }
        });

        Button2.setText("Mostar");
        Button2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                Button2ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addComponent(jLabel1)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 103, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addComponent(jLabel2)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, 103, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addComponent(jLabel3)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, 103, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addComponent(jLabel4)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(jTextField4, javax.swing.GroupLayout.PREFERRED_SIZE, 103, javax.swing.GroupLayout.PREFERRED_SIZE)))
                        .addContainerGap(13, Short.MAX_VALUE))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                        .addComponent(Button1)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 12, Short.MAX_VALUE)
                        .addComponent(Button2)
                        .addContainerGap())))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(13, 13, 13)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel2)
                    .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(13, 13, 13)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel3)
                    .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel4)
                    .addComponent(jTextField4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(7, 7, 7)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(Button2)
                    .addComponent(Button1))
                .addContainerGap())
        );

        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()
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        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(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );

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

    private void Button1ActionPerformed(java.awt.event.ActionEvent evt) {
        GetDatos(jTextField1.getText(),0);
        GetDatos(jTextField2.getText(),1);
        GetDatos(jTextField3.getText(),2);
        GetDatos(jTextField4.getText(),3);       
}

    private void Button2ActionPerformed(java.awt.event.ActionEvent evt) {
        String mostrar="";
        for (int i=0;i<4;i++){
            mostrar = mostrar + SetDatos(i)+"-";
        }
        JOptionPane.showMessageDialog(null,mostrar);
}
   
    /**
     * @param args the command line arguments
     */
    private void GetDatos(String cadena,int pos){
        dato[pos]=cadena;
    }
    private String SetDatos(int pos){
        return dato[pos];
    }
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Main().setVisible(true);
            }
        });
    }
   
    // Variables declaration - do not modify
    private javax.swing.JButton Button1;
    private javax.swing.JButton Button2;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    private javax.swing.JTextField jTextField3;
    private javax.swing.JTextField jTextField4;
    // End of variables declaration
   
}