Autor
|
Tema: Ayuda con un jButton (Leído 7,496 veces)
|
kapotnt
Desconectado
Mensajes: 40
|
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!
|
|
|
En línea
|
|
|
|
-Ramc-
Desconectado
Mensajes: 495
|
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.
|
|
|
En línea
|
Shhh... be vewy, vewy, quiet! I'm hunting wabbits...LA PANDILLA MAS GRANDE DE MI CIUDAD, SE LLAMA POLICIA NACIONAL.
|
|
|
kapotnt
Desconectado
Mensajes: 40
|
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
|
|
|
En línea
|
|
|
|
~~
|
|
|
|
En línea
|
|
|
|
sapito169
Desconectado
Mensajes: 628
|
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 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 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
|
|
|
En línea
|
|
|
|
|
CorazonValiente
|
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 }
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Desplazamiento de JButton o JLabel
Java
|
c0der
|
7
|
15,938
|
21 Diciembre 2010, 21:30 pm
por Debci
|
|
|
filtrar Texto en un JTable conectado a un BD con un JButton y un JTextField?
Java
|
hack-4-life
|
2
|
8,982
|
21 Marzo 2011, 04:35 am
por hack-4-life
|
|
|
Usar una imagen como JButton (NetBeans)
Java
|
Xedrox
|
2
|
25,866
|
18 Abril 2011, 02:33 am
por 1mpuls0
|
|
|
Poner un JLabel donde estaba un un JButton
Java
|
goditozor
|
2
|
3,867
|
17 Mayo 2011, 04:33 am
por 1mpuls0
|
|
|
Problema con JButton y ordenación
« 1 2 »
Java
|
Mai89
|
13
|
7,541
|
25 Agosto 2011, 12:18 pm
por Mai89
|
|