URGENTE_problemas con objetos Button

Sanz
27 de Abril del 2006
Buenas,

¿Alguien podría ayudarme a solucionar un problema, lo más pronto posible, por favor?Es urgente, lo he intentado todo y me queda poco tiempo.

Estoy haciendo un programa el cual consiste en una ventana donde hay un label y un panel formado por tres buttons. Inicalmente en el label se peude ver escrito una frase, pero esta cambia en el momento en que se aprieta un botón, indicando cual ha sido.

El problema está en los botones. Estos están declardos en el interior del main como Button (a secas, es decir, no es static, ni nada parecido) y al compilar el programa me sale el siguiente comentario: "non-static variable this cannot be referenced from a static context" , es decir por lo que entiendo me está diciendo que no puedo declarar los botones en el main ya que este no es static, por esta razón le añado a la declaración de los botones el término static y entonces me sale el siguiente comentario :" illegal start of expression" .

En consecuencia me he quedado bloqueada ya que poniendo o no static me sale error. También los he declarado al principo, fuera del main, pero nada. Además el código es muy parecido a otro que me han dejado, con la única diferencia que en lugar de cambiar el tcxto , cmabia el color.

A continuación adjunto la parte del código del programa donde he declarado los botones.

static Button b1 = new Button("Botó 'A'");
static Button b2 = new Button("Botó 'B'");
static Button b3 = new Button("Botó 'C'");

Pregunta: ¿Es posible que el problema provienga de otro fragmento? ya que he tenido problemas para que el programa reconozca que botón se aprieta y en consecuencia cambie la frase del label. Si no les importa, me podrían, también, revisar este fragmento, por favor:

public void actionPerformed(ActionEvent e){
String boto = e.getActionCommand();
if(boto=="Botó 'A'"){new Label("Botó 'A'");}
if(boto=="Botó 'B'"){new Label("Botó 'B'");}
if(boto=="Botó 'C'"){new Label("Botó 'C'");}
}

Gracias de antemano a [email protected] [email protected] que me puedan o intenten ayudar.

Miguel Angel
27 de Abril del 2006
prueba esto

static Button b1 = new Button("Botó 'A'"); b1.addActionListener(this);
static Button b2 = new Button("Botó 'B'");
b2.addActionListener(this);
static Button b3 = new Button("Botó 'C'");
b3.addActionListener(this);


public void actionPerformed(ActionEvent e){
if(boto==b1){
// acción referente al botón 1
}
else if(boto==b2){ }
else if(boto==b3){ }
}

Espero que te sirva. Saludos

Sanz
27 de Abril del 2006
Gracias por tu ayuda, pero continua sin funcionar.

He podidio solucionar el problema de los botones cambiando el 'this', del lugar donde los declaro, por mainFrame (es un objeto del tipo de la clase del programa donde se desarrolla todo), ya que lo hice así en una práctica del colegio pero no acabo de entender su función al igual que con el this.
Pero el problema está en que el mensaje del label no cambia cuando apretamos los botones. Lo he hecho como me has dico pero no funciona, al compilarlo me sale que:
"cannot resolve symbol variable b1" , lo mismo ocurre con b2 y b3.

No sé si el problema podría estar en que no utilitzo bien el get.Source(), pero también lo he provado con el getActionCommand() y nada. Y al igual al caso anterior, no acabo de comprender para que sirven (get.Source(), getActionCommand()).

Estoy muy perdida. Te agradecería que me hecharás una mano,por favor. Repito, Gracias por intenarlo.