Java - Uso del ActionListener y ActionEvenet

 
Vista:
Imágen de perfil de Francisco gonzalez

Uso del ActionListener y ActionEvenet

Publicado por Francisco gonzalez (20 intervenciones) el 14/04/2016 09:00:36
Que tal gente...
espero me puedan sacar de duda como lo han hecho antes otros o los msmo que me responden..

como puedo usar un metodo actionPerformed en otra clase?
ya que hasta el momento solo la se usar en el Main pero a mi no me da la gana de usarla ahi... quiero tener las acciones en otra clase pero mis botones en otra...(espero me haya explicado)

aqui les dejo el ejemplo que he hecho para ver si me ayudan

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
//esta es mi clase principal
 
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
 
 
 
public class Formulario_1 extends JFrame{
 
 
    public static void main(String[] args) {
 
 
 
        JFrame ventana = new JFrame("Prueba de Ventana a otra");
        ventana.setLocation(300, 300);
        ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        ventana.setLayout(null);
        ventana.setSize(400, 400);
        ventana.setResizable(true);
 
 
        JLabel txt = new JLabel("esto es el formulario 1");
        txt.setBounds(20, 20, 200, 30);
        ventana.add(txt);
 
        JButton btn_llevar = new JButton("Forma 2");
        btn_llevar.setBounds(190, 20, 100, 30);
        Formulario_2 forma = new Formulario_2();
        btn_llevar.addActionListener(forma);
        ventana.add(btn_llevar);
 
        ventana.setVisible(true);
 
    }
 
}
 
 
//este es mi clase dentro del paquete que creé en mi compilado netbeans
 
 
 
import java.awt.event.*;
import javax.swing.JButton;
import javax.swing.JFrame;
 
 
public class Formulario_2 extends JFrame implements ActionListener{
 
 
 
    public void actionPerformed(ActionEvent a){
        Formulario_2 forma = new Formulario_2();
        forma.setTitle("Otra ventana");
        forma.setLocation(300, 300);
        forma.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        forma.setSize(400, 300);
        forma.setLayout(null);
    }
}

pues espero sus respuesta y muchas gracias por leerme aunque sea
saludos desde Panama :D
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Oscar

Uso del ActionListener y ActionEvenet

Publicado por Oscar (2 intervenciones) el 15/04/2016 04:52:46
Que tal Francisco!

A mi tampoco me gusta hacer todo el código en el main, el cual no recomiendo, ya que es una mala práctica,
en fin... con respecto a tu duda, te explico el siguiente ejemplo:

Tengo una clase Ventana.java:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package ventana;
 
import java.awt.FlowLayout;
 
import javax.swing.JButton;
import javax.swing.JFrame;
 
public class Ventana extends JFrame {
 
	private JButton btn;
 
	public Ventana(){
		super("Mi ventana"); //Título de ventana
		componentes(); //componentes de ventana
	}
 
	private void componentes(){ //implementación de método componentes
		this.setLayout(new FlowLayout()); //  estableces el layout
 
		this.btn = new JButton("Abrir Ventana"); //Creamos un botón
               // agregamos un listener al btn, llamado AbrirVentanaAction, en el cual le pasamos la caseVentana
               //mediante this, (esto para poder acceder a los atributo y/o métodos de la clase ventana) 
		this.btn.addActionListener(new AbrirVentanaAction(this));
		 this.add(this.btn); //agregamos a nuestro marco, es decir JFrame
 
	}
 
	public JButton getBtn() {
		return btn;
	}
 
	public void setBtn(JButton btn) {
		this.btn = btn;
	}
 
}

Nuestro ActionListener AbrirVentanaAction.class

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package ventana;
 
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
import javax.swing.JFrame;
 
public class AbrirVentanaAction implements ActionListener {
 
	private Ventana v;// Atriburo de tipo Ventana
 
	 public AbrirVentanaAction(Ventana v) {//Constructor recive el Objeto ventana
		this.v = v;
	}
 
	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
 
               //Utilizo el Objeto v (Ventana) para acceder a sus atributos, en este caso Btn
		if(e.getSource() == this.v.getBtn()){
                        //Abra una nuva ventana (JFrame)
			OtraVentana otra = new OtraVentana();
			otra.setSize(200,200);//establesco dimensiones
			otra.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//Le indico que se cierre, al dar click en el icono (X)
			otra.setVisible(true);//La muestro
		}
 
	}
 
}
 
OtraVentana.class
 
package ventana;
 
import javax.swing.JFrame;
 
public class OtraVentana extends JFrame {
 
	public OtraVentana() {
		super("Otra Ventana");
	}
}



Por último la clase main.class para ejecutar mi aplicación

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package ventana;
 
import javax.swing.JFrame;
 
public class Main {
 
	public static void main(String[] args) {
		// TODO Auto-generated method stub
 
		Ventana v = new Ventana();
		v.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		v.setSize(200, 200);
		v.setVisible(true);
 
	}
 
}

Esto es una forma de separae el código, a manera de capas, es decir, interfaz (Jframe, btones, etc...), logica (eventos) y
Persistencia (Acceso a datos, aunque, en este caso no aplica).

Tengo pensado hacer un tutorial de interfaces gráficas de usuario en java , sólo que no he tenido
tiempo de seguirle, te dejo el link del blog: http://iamprogramming.blogspot.mx/

Espero haberte ayudado, Saludos desde México!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Francisco gonzalez

Uso del ActionListener y ActionEvenet

Publicado por Francisco gonzalez (20 intervenciones) el 15/04/2016 07:48:51
Que tal Oscar...
En verdad muchisimas gracias... em has sacado de una duda que pense que seria enterna...
Lo que mas me gusta y mas que todo queria saber era como mandarle el evento a la otra clase y era algo simple
"this.btn.addActionListener(new AbrirVentanaAction(this));" <---- esta linea era el detalle
gracias nuevamente y claro... seguire tu blog :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar