elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  [AYUDA] Ayuda con botones en Java (soy nuevo en java)...
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [AYUDA] Ayuda con botones en Java (soy nuevo en java)...  (Leído 2,756 veces)
Noxware

Desconectado Desconectado

Mensajes: 195



Ver Perfil
[AYUDA] Ayuda con botones en Java (soy nuevo en java)...
« en: 25 Agosto 2014, 18:23 pm »

Hola, soy nuevo en la programacion en Java... lo q sucede es q recien ayer aprendi a usar "swing" para hacer mis interfaces graficas... el problema es q cuando creo un boton, para darle un funcion por lo q lei tengo q pasarle una clase como argumento...

pero necesito q ese boton modifique variables q estan en la clase "main" pero no puedo modificar esos valores desde la clase del boton.... hay alguna forma de modificar esos valores sin hacerlos estaticos??? o alguna forma de q un boton tenga una funcion sin tener q pasarle una clase como argumento??? no se si me explico bien porque soy un novato en Java.... personalmente no me gusta Java ya q la complica demasiado pero tengo q entregar un proyecto y ese proyecto tiene q estar programado en Java.... gracias y espero su ayuda


En línea

"La mejor forma de conocer a una persona es viendo su código... o en una partida de ajedrez...

PD: Si no tengo faltas de ortografía es porque use el autocorrector."
l3ad Programmer

Desconectado Desconectado

Mensajes: 10


(Bad) Java Programmer


Ver Perfil
Re: [AYUDA] Ayuda con botones en Java (soy nuevo en java)...
« Respuesta #1 en: 25 Agosto 2014, 20:42 pm »

Tu proyecto por lo visto está mal estructurado. En la clase main no tienes que tener código. Los códigos deben estar en sus respectivas clases y tales clases tienen que tener un objetivo. En el método main, en una aplicación Swing, solo debería instanciarse la clase que representa a la interfáz gráfica y ejecutarla.

Cuando trabajas con interfaces gráficas, siempre es convenible utilizar el patrón de diseño Modelo - Vista - Controlador (MVC). De ésta manera delegas responsablidades de forma ordenada y eficiente.

Cita de: francoyo1998
alguna forma de q un boton tenga una funcion sin tener q pasarle una clase como argumento?

En Swing hay dos formas de usar eventos: Por medio de clases internas y por implementación de la interfaz ActionListener que es la proveedora de eventos para controles.

Código
  1. JButton btnSay = new JButton("Saluda!");
  2. btnSay.addActionListener( new ActionListener() {
  3. @Override
  4. public void actionPerformed(ActionEvent e) {
  5. JOptionPane.showMessageDialog(null, "Hola!");
  6. }
  7. });

La otra forma es implementarlo la interfaz ActionListener:

Código
  1. public class MyGUI extends JFrame implements ActionListener {
  2.  
  3. // metodos que se implementaran
  4. @Override
  5. public void actionPerformed(ActionEvent e) {
  6. JOptionPane.showMessageDialog(null, "Hola!");
  7. }
  8.  
  9. @Override
  10. public void keyPressed(KeyEvent e) {
  11. // codigo que quieres que haga
  12. }
  13.  
  14. // y otros mas...
  15.  
  16. public MyGUI() {
  17.        super("ActionListener");
  18. this.setSize(400,400);
  19. this.setResizable(false);
  20. FlowLayout fl = new FlowLayout();
  21. // registra el listener al boton
  22. JButton btnSayHello = new JButton("Greet!");
  23. btnSayHello.addActionListener(this);
  24. fl.add(btnSayHello);
  25. this.add(fl);
  26. this.setVisible(true);
  27. }
  28. }

[-] Ejemplo MVC:

[-] Paquete net.badprogrammer.events.view

Código
  1. public class MyGUI extends JFrame {
  2.  
  3. // le pasamos por parametro la referencia de la clase MyGUI
  4. private static final MyGUIController controller = new MyGUIController(this);
  5.  
  6. public MyGUI() {
  7. this.setSize(400,400);
  8. this.setResizable(false);
  9. FlowLayout fl = new FlowLayout();
  10. // registra el listener al boton
  11. JButton btnSayHello = new JButton("Greet!");
  12. btnSayHello.addActionListener(controller);
  13. fl.add(btnSayHello);
  14. this.add(fl);
  15. this.setVisible(true);
  16. }

[-] Paquete net.badprogrammer.events.model: Aquí irá tu lógica de negocio.


[-] Paquete net.badprogrammer.events.controller: Aquí irán las clases que controlarán las vistas y las clases del model:

Código
  1. public class MyGUIController implements ActionListener {
  2.  
  3. private MyGUI gui;
  4.  
  5. public MyGUIController(MyGUI gui) {
  6. this.gui = gui;
  7. }
  8.  
  9. @Override
  10. public void actionPerformed(ActionEvent event) {
  11. if (event.getActionCommand().equals("btnSayHello")) {
  12. JOptionPane.showMessageDialog(null, "Hola amigo!");
  13. }
  14. if (event.getActionCommand().equals("btnExit")) {
  15. JOptionPane.showMessageDialog(null, "Adiós amigo!");
  16. System.exit(0);
  17. }
  18. }
  19.  
  20. // los otros metodos implementados por ActionListener
  21.  
  22. }

Nota: En el paquete net.badprogrammer.model van a ir tus clases de tu lógica de negocio, es decir las clases que requieren mayor encapsulasión, que pueden ser clases que representen a usuarios, productos, etc. Éstas clases también deben ser accedidas solo por el Controlador.

Espero hayas comprendido. Saludos.


« Última modificación: 25 Agosto 2014, 21:02 pm por l3ad Programmer » En línea

LaThortilla (Effort)

Desconectado Desconectado

Mensajes: 234


¿En que vida harás lo que en esta no?


Ver Perfil WWW
Re: [AYUDA] Ayuda con botones en Java (soy nuevo en java)...
« Respuesta #2 en: 10 Octubre 2014, 20:19 pm »

Tu proyecto por lo visto está mal estructurado. En la clase main no tienes que tener código. Los códigos deben estar en sus respectivas clases y tales clases tienen que tener un objetivo. En el método main, en una aplicación Swing, solo debería instanciarse la clase que representa a la interfáz gráfica y ejecutarla.

Cuando trabajas con interfaces gráficas, siempre es convenible utilizar el patrón de diseño Modelo - Vista - Controlador (MVC). De ésta manera delegas responsablidades de forma ordenada y eficiente.


Nota: En el paquete net.badprogrammer.model van a ir tus clases de tu lógica de negocio, es decir las clases que requieren mayor encapsulasión, que pueden ser clases que representen a usuarios, productos, etc. Éstas clases también deben ser accedidas solo por el Controlador.

Espero hayas comprendido. Saludos.
Amigo algun libro que hable sobre  MVC aplicado a java porfavor ...... Porfa
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Aspectos de botones y ventanas java
Java
AsTeroine 7 14,136 Último mensaje 12 Agosto 2009, 01:08 am
por 1mpuls0
botones en java
Java
Grey_Area 2 3,231 Último mensaje 29 Noviembre 2011, 23:09 pm
por Grey_Area
Botones JAVA
Java
jemiesro 2 2,773 Último mensaje 14 Junio 2013, 11:23 am
por Slider324
[AYUDA][Problema] Cargar imagenes en Java (soy nuevo en Java)
Java
Noxware 3 4,088 Último mensaje 14 Septiembre 2014, 19:39 pm
por Noxware
[AYUDA] Soy nuevo en java y necesito ayuda para meter imagenes en un .jar
Java
Noxware 0 2,436 Último mensaje 16 Septiembre 2014, 23:01 pm
por Noxware
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines