Botones de java - Urgente!
Hola.
Como lo dice el titulo, tengo un problema. Necesito agregarle al siguiente programa otros botones que guarden/salven, borren, muestren catalogo y cancele el trabajo. Por lo pronto sólo he agregado uno que no tiene ninguna acción, como se puede ver sólo contiene la leyenda "enviar". Soy bastante inexperto en este lenguaje, y de verdad necesito ayuda. Se los agradecería mucho
javax.swing.JLabel etiqueta;
javax.swing.JLabel etiqueta2;
javax.swing.JLabel etiqueta3;
javax.swing.JLabel etiqueta4;
javax.swing.JLabel etiqueta5;
javax.swing.JLabel etiqueta6;
javax.swing.JLabel etiqueta7;
javax.swing.JTextField cajaTexto;
javax.swing.JTextField cajaTexto2;
javax.swing.JTextField cajaTexto3;
javax.swing.JTextField cajaTexto4;
javax.swing.JTextField cajaTexto5;
javax.swing.JTextField cajaTexto6;
javax.swing.JTextField cajaTexto7;
javax.swing.JButton boton;
public Alumnos(){
setSize(1024,5709);
setTitle("Control de alumnos");
iniciaComponentes();
}
void iniciaComponentes(){
etiqueta=new javax.swing.JLabel();
etiqueta2=new javax.swing.JLabel();
etiqueta3=new javax.swing.JLabel();
etiqueta4=new javax.swing.JLabel();
etiqueta5=new javax.swing.JLabel();
etiqueta6=new javax.swing.JLabel();
etiqueta7=new javax.swing.JLabel();
cajaTexto=new javax.swing.JTextField();
cajaTexto2=new javax.swing.JTextField();
cajaTexto3=new javax.swing.JTextField();
cajaTexto4=new javax.swing.JTextField();
cajaTexto5=new javax.swing.JTextField();
cajaTexto6=new javax.swing.JTextField();
cajaTexto7=new javax.swing.JTextField();
boton=new javax.swing.JButton();
getContentPane().setLayout(null);
etiqueta.setText("Matricula");
getContentPane().add(etiqueta);
etiqueta.setBounds(20, 20, 100, 25);
etiqueta2.setText("Clave Materia");
getContentPane().add(etiqueta2);
etiqueta2.setBounds(20, 70, 100, 25);
etiqueta3.setText("Calificación 1");
getContentPane().add(etiqueta3);
etiqueta3.setBounds(20, 120, 100, 25);
etiqueta4.setText("Calificación 2");
getContentPane().add(etiqueta4);
etiqueta4.setBounds(20, 170, 100, 25);
etiqueta5.setText("Calificación 3");
getContentPane().add(etiqueta5);
etiqueta5.setBounds(20, 220, 100, 25);
etiqueta6.setText("Calificación Extra");
getContentPane().add(etiqueta6);
etiqueta6.setBounds(20, 270, 100, 25);
etiqueta7.setText("Status");
getContentPane().add(etiqueta7);
etiqueta7.setBounds(20, 320, 100, 25);
cajaTexto.setText("");
getContentPane().add(cajaTexto);
cajaTexto.setBounds(200, 20, 200, 25);
cajaTexto2.setText("");
getContentPane().add(cajaTexto2);
cajaTexto2.setBounds(200, 70, 200, 25);
cajaTexto3.setText("");
getContentPane().add(cajaTexto3);
cajaTexto3.setBounds(200, 120, 200, 25);
cajaTexto4.setText("");
getContentPane().add(cajaTexto4);
cajaTexto4.setBounds(200, 170, 200, 25);
cajaTexto5.setText("");
getContentPane().add(cajaTexto5);
cajaTexto5.setBounds(200, 220, 200, 25);
cajaTexto6.setText("");
getContentPane().add(cajaTexto6);
cajaTexto6.setBounds(200, 270, 200, 25);
cajaTexto7.setText("");
getContentPane().add(cajaTexto7);
cajaTexto7.setBounds(200, 320, 200, 25);
boton.setText("Enviar");
getContentPane().add(boton);
boton.setBounds(75, 400, 105, 35);
addWindowListener(new java.awt.event.WindowAdapter(){
public void WindowClosing(java.awt.event.WindowEvent evt){
System.exit(0);
}});
}
public static void main(String[] arg){
new Alumnos().setVisible(true);
}
}
Hasta aquí, el programa funciona de maravilla. Muestra la ventana con el único botón bien alineado, según yo. Pero de verdad urgen los demás. Gracias de antemano
- Inicie sesión o regístrese para enviar comentarios
Necesitas agregar un
Necesitas agregar un actionlistener al boton ( similar al que tienes con el windowListener
Por ejemplo el siguiente programa reacciona cuando oprimes el botón:
import java.awt.*;
import java.awt.event.*;
class Ejemplo {
public static void main( String ... args ) {
ActionListener queVaaHacer = new UnActionListener();
JButton button = new JButton("Da click!");
button.addActionListener( queVaaHacer );
JFrame frame = new JFrame();
frame.add( button );
frame.pack();
frame.setLocationRelativeTo( null );
frame.setVisible( true );
}
}
class UnActionListener implements ActionListener {
public void actionPerformed( ActionEvent e ) {
System.out.println( " 2 + 2 son " + ( 2 + 2 ) );
}
}
Lo que haga el programa dentro del
actionPerformed
depende de la logica de tu programa.Este es el resultado del ejemplo que puse:
Otra alternativa...
Puedes implementar en tu clase la interface
ActionListener
y en los botones agregarles la acción, así con una referencia athis
te preocupas de las acciones de cada botón hasta que implementas el métodoactionPerformed( ActionEvent ae){}
private JButton laAccion = new JButton("La Accion");
... //mas codigo
laAccion.addActionListener( this);
}
y la acción dentro del
actionPerformed( ActionEvent ae){}
la desglosas con ciclosif
actionPerformed( ActionEvent ae){
if( ae.getSource() == laAccion){
//aquí puedes redigir a otro metodo o hacer lo que quieras
}
else if( ae.getSource() == otroBoton ){
....//más codigo
}
actionCommand
Y otra opción es usar la propiedad
actionCommand
, que es una simple cadena, pero con eso puedes saber qué hacer, sin importar la clase del objeto que envía el evento, o aunque no tengas referencia a él (cosa que es común):private JButton boton = new JButton("Aprietame");
boton.setActionCommand("salvar");
...
//En otra clase
private JButton boton = new JButton("Otro distinto");
boton.setActionCommand("eliminar");
private JTextField tf = new JTextField(20);
tf.setActionCommand("buscar");
Suponte que a esos dos botones les pones el mismo ActionListener. En tu ActionListener haces algo tipo
if ("salvar".equals(ev.getActionCommand()) {
//salvar algo, sin importar quién haya enviado la acción
} else if ("eliminar".equals(ev.getActionCommand()) {
//eliminar algo, habrá que buscar el contexto de alguna forma
} else if ("buscar".equals(ev.getActionCommand()) {
//Buscar el texto del objeto que envió el evento
}
}
De este modo, el ActionListener puede no saber de la existencia de los botones y textfields que le van a enviar esas acciones. En todo caso puedes hacer cast por ejemplo en la condición de buscar, a que el origen del evento sea un JTextField, pero no importa cuál haya sido. Esto hace que tu ActionListener sea más reutilizable.