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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  varios JButton que ejecuten un único método
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: varios JButton que ejecuten un único método  (Leído 7,270 veces)
Gabilitron

Desconectado Desconectado

Mensajes: 15


Ver Perfil
varios JButton que ejecuten un único método
« en: 23 Febrero 2012, 02:33 am »

Buenas, mi propósito es crear un tablero, del estilo del juego del ajedrez.
Estoy utilizando Eclipse, y la clase JFrame del paquete Window Builder.
Dejando la programación del código aparte, el objetivo es conseguir ejecutar un método cuando el usuario pulse una casilla de dicho tablero. Para ello he creado un tablero en el que cada casilla es un JButton (casi no conozco el entorno gráfico, así que no conozco mejores opciones para conseguir lo que busco).

Precisamente por eso utilizo la clase JFrame en su modo de diseño, para no tener que escribir todo ese código. Lo que sé hacer es conseguir que al pulsar un botón se escriba texto en una caja de texto, o que se ejecute un método de cualquier otra clase. Para ello, solo escribo el código dentro de esta estructura, siendo A1 el nombre del botón.
Citar
JButton A1 = new JButton("T");
      A1.setAction(action);
      A1.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
// Aquí dentro puedo llamar a un método
         }
El problema es que tengo muchas casillas, y no voy a escribir el código dentro de cada una de ellas.
Es más, quiero conseguir que al pulsar cualquiera de los botones se ejecute un único método, que será el mismo para todos. Esa es mi pregunta, seguro que hay alguna opción en el modo diseño que permite hacerlo, y además me suena haberlo hecho en visual basic.
Aunque parezca una tontería que todos botones tengan el mismo efecto, pensando en un tablero de juego, solo me interesa saber cuál de los botones está pulsando el usuario para poder ejecutar un método al que le pasaré el nombre del botón pulsado.
Ya digo que es solo un experimento que estoy haciendo, nada serio. Con lo cual, es posible que el asunto tenga mucha más miga que la que llego a ver, o, que me esté complicando la vida. De todas formas no tengo demasiados recursos todavía en el mundo de la programación y tiro por los que sé.

Así que desde aquí, muchas gracias, y cualquier respuesta será bienvenida.


En línea

RyogiShiki


Desconectado Desconectado

Mensajes: 745


げんしけん - Hikkikomori FTW!!!


Ver Perfil WWW
Re: varios JButton que ejecuten un único método
« Respuesta #1 en: 23 Febrero 2012, 04:37 am »

lo mejor en este caso es crear un array de botones y con un for asígnarles un actioncommand, para que cuando se produzca la cción sea la misma para todos:

Código
  1. public class ButtonArray implements ActionListener{
  2. private JButton buttons[] = new JButton[10];
  3.        /*... mas codigo que opere con los botones */
  4. private void initButtons() {
  5. for (JButton b : buttons) {
  6.                        /*... mas codigo que opere con los botones */
  7. b.setActionCommand("action")
  8. }
  9. }
  10.  
  11. @Override
  12. public void actionPerformed(ActionEvent e) {
  13. if (e.getActionCommand().equals("action"))) {
  14. methodToExecute();
  15. }
  16. }
  17. }

Pero entonces has de revisar muy bien el tema de los Listeners, y estudiar un poco sobre Swing.

Saludos


En línea

Gabilitron

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: varios JButton que ejecuten un único método
« Respuesta #2 en: 23 Febrero 2012, 23:23 pm »

Pues sí, me miraré lo que dices, porque así en principio no tengo ni idea. No conozco casi el JFrame y solo lo he utilizado en el modo gráfico. Osea, que no sé nada del código que autogenera.
Gracias.
En línea

RyogiShiki


Desconectado Desconectado

Mensajes: 745


げんしけん - Hikkikomori FTW!!!


Ver Perfil WWW
Re: varios JButton que ejecuten un único método
« Respuesta #3 en: 23 Febrero 2012, 23:46 pm »

Y el código que autogenera tampoco lo vas a entender de a mucho, porquee stos builders generan código muy denso pesado, sucio e innecesario.

Saludos
En línea

Proteus1989

Desconectado Desconectado

Mensajes: 184



Ver Perfil WWW
Re: varios JButton que ejecuten un único método
« Respuesta #4 en: 24 Febrero 2012, 03:25 am »

Puedes crearte una clase que implementa ActionListener y llamar siempre a la misma.

Código
  1. class AccionBotones implements ActionListener{
  2.    private TuClasePrincipal clase;
  3.    public AccionBotones(TuClasePrincipal clase){
  4.        this.clase=clase;
  5.    }
  6.    public void actionPerformed(ActionEvent ev){
  7.       //Codigo
  8.    }
  9. }

Para llamarla
Código
  1. AccionBotones accion = new AccionBotones(this)
  2. boton.addActionListener(accion)
En línea

visualfree

Desconectado Desconectado

Mensajes: 201


Ver Perfil
Re: varios JButton que ejecuten un único método
« Respuesta #5 en: 17 Marzo 2012, 08:52 am »

Aca te hice un ejemplo espero te sirva...

Código:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class Prueba{
public static void main(String[] args)
{
Ventana v=new Ventana();
v.setVisible(true);
}
}
class Ventana extends JFrame{
public Ventana()
{
this.setTitle("Tablero");
this.setSize(200,200);
Tablero tablero=new Tablero();
add(tablero);
}

}
class Tablero extends JPanel{
private JButton btn1=new JButton("1");
private JButton btn2=new JButton("2");
private JButton btn3=new JButton("3");
private JButton btn4=new JButton("4");
public Tablero()
{
this.setLayout(new GridLayout(2,2));
this.add(btn1);this.add(btn2);
this.add(btn3);this.add(btn4);
OyenteBoton oBoton=new OyenteBoton();
btn1.addActionListener(oBoton);
btn2.addActionListener(oBoton);
btn3.addActionListener(oBoton);
btn4.addActionListener(oBoton);
}
class OyenteBoton implements ActionListener{
public void actionPerformed(ActionEvent e)
{
if(e.getActionCommand().equals("1"))
{
System.out.println("Usted presiono el Boton 1");
}else if(e.getActionCommand().equals("2"))
{
System.out.println("Usted Presiono el Boton 2");
}else if(e.getActionCommand().equals("3"))
{
System.out.println("Usted Presiono el Boton 3");
}else if(e.getActionCommand().equals("4"))
{
System.out.println("Usted Presiono el Boton 4");
}
}
}
}
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con un jButton
Java
kapotnt 6 7,289 Último mensaje 4 Septiembre 2008, 18:07 pm
por CorazonValiente
evento de un JButton
Java
brian_e 6 9,064 Último mensaje 27 Abril 2009, 16:25 pm
por Amerikano|Cls
¿Como hacer que los labels se ejecuten cada cierto tiempo?
Programación Visual Basic
El anonimato 3 3,169 Último mensaje 23 Febrero 2011, 00:18 am
por seba123neo
Evitar se ejecuten instrucciones en olly
Ingeniería Inversa
x64core 2 2,056 Último mensaje 18 Marzo 2012, 06:00 am
por x64core
Cómo controlar varios ordenadores con un único ratón y teclado
Noticias
wolfbcn 0 1,265 Último mensaje 13 Enero 2016, 21:54 pm
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines