Home Foros Foro dudas Foro de Java Consulta como usar un metodo de la clase JFrame desde otra clase… Respuesta a: Consulta como usar un metodo de la clase JFrame desde otra clase…

Respuesta a: Consulta como usar un metodo de la clase JFrame desde otra clase…

Home Foros Foro dudas Foro de Java Consulta como usar un metodo de la clase JFrame desde otra clase… Respuesta a: Consulta como usar un metodo de la clase JFrame desde otra clase…

#11757

Cristian
Participante

<p style=”box-sizing: border-box; margin: 0px 0px 10px; -webkit-font-smoothing: antialiased; font-size: 14px; font-family: Lato; color: #444444;”>Hola Frank, hice lo que dijiste, pero mas que razonando fue a prueba y error.Entiendo el que el this hace referencia al lugar que estamos trabajando, pero como seria la asociasion o funcionamiento para entenderlo a todo el conjunto?</p>
<p style=”box-sizing: border-box; margin: 10px 0px; -webkit-font-smoothing: antialiased; font-size: 14px; font-family: Lato; color: #444444;”>Luego porque no es necesario poner a la escucha los otros dos botones con un xxx.addActionListener? Y porque cdo presiono el boton azul me imprime dos mensajes y no uno? Estimo que es pq solo esta el azul con addActionListener…pero no lo entiendo… y no entiendo pq los otros dos botones funcionan…</p>
<p style=”box-sizing: border-box; margin: 10px 0px; -webkit-font-smoothing: antialiased; font-size: 14px; font-family: Lato; color: #444444;”>Dejo el codigo, para ver que es lo que tu piensas y si esta mas o menos bien (funciona) como esta realizado.</p>
 

public class PruebaAcciones {

public static void main(String[] args) {

 

MarcoAccion marco = new MarcoAccion();

marco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

marco.setVisible(true);

 

}

}

 

class MarcoAccion extends JFrame{

 

public MarcoAccion(){

 

setTitle(“Marco Acciones”);

setSize(600, 300);

setLocationRelativeTo(null);

 

PanelAccion lamina = new PanelAccion();

 

add(lamina);

 

}

 

}

 

 

class PanelAccion extends JPanel{

 

public PanelAccion(){

/*JButton botonAmarillo = new JButton(“Amarillo”);

JButton botonAzul = new JButton(“Azul”);

JButton botonRojo = new JButton(“Rojo”);

add(botonAmarillo);

add(botonAzul);

add(botonRojo);*/

 

AccionColor accionAmarillo = new AccionColor(“Amarillo”, new ImageIcon(“src/graficos/bola.png”), Color.YELLOW,this);

AccionColor accionAzul = new AccionColor(“Azul”, new ImageIcon(“src/graficos/bolazul.png”), Color.BLUE, this);

AccionColor accionRojo = new AccionColor(“Rojo”, new ImageIcon(“src/graficos/bola.png”), Color.RED, this);

 

//JButton amarillo = new JButton(accionAmarillo);

add(new JButton(accionAmarillo));

JButton azul = new JButton(accionAzul);

JButton rojo = new JButton(accionRojo);

//add(amarillo);

add(azul);

add(rojo);

 

azul.addActionListener(accionAzul);

 

}

 

}

 

class AccionColor extends AbstractAction{

 

public AccionColor(String nombre, Icon icono, Color color_boton,PanelAccion e){

 

putValue(Action.NAME, nombre);

putValue(Action.SMALL_ICON, icono);

putValue(Action.SHORT_DESCRIPTION, “Poner la lamina de color ” + nombre);

putValue(“Color de fondo”, color_boton);

colorF = color_boton;

nuevo = e;

}

 

public void actionPerformed(ActionEvent e) {

 

nuevo.setBackground(colorF);

System.out.println(“Hola”);

 

}

Color colorF;

PanelAccion nuevo;

}

 

Saludos!

Pd/ no se porque copia mal los mensajes anteriores, tampoco puedo editar o borrar.