Foros del Web » Programación para mayores de 30 ;) » Java »

Creación dinámica de botones

Estas en el tema de Creación dinámica de botones en el foro de Java en Foros del Web. Hola a todos, tengo un problemilla a la hora de crear dinámicamente botones con Java: tengo que crear una aplicación de interfaz gráfica que contenga ...
  #1 (permalink)  
Antiguo 22/11/2005, 12:13
 
Fecha de Ingreso: noviembre-2005
Mensajes: 8
Antigüedad: 19 años
Puntos: 0
Creación dinámica de botones

Hola a todos, tengo un problemilla a la hora de crear dinámicamente botones con Java: tengo que crear una aplicación de interfaz gráfica que contenga un botón (Jbutton normal y corriente) de manera que, cuando el usuario pulse en ese botón, se añadirá un nuevo botón a la ventana. Este nuevo botón contendrá tendrá un icono y su nombre será el color del icono que contiene. Los colores los decide la aplicación de manera aleatoria, es decir que si pulsamos 7 veces tendremos algo parecido a:

[crea un botón][amarillo][verde][naranja][azul][verde][verde]

Cualquiera de los botones generados debe ser capaz a su vez de generar un nuevo botón, con su mismo color.


Es algo bastante sencillo pero es que al compilar me sale un error que no entiendo y soy incapaz de solucionar por muchas vueltas que le dé. Os voy a dejar el fragmento de código para ver si alguno podeis ayudarme.


//método del botón inicial, creado en el initComponents()
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
javax.swing.JButton jButtonAux;
numero_aleatorio = Math.random();
if (numero_aleatorio < 0.25){
jButtonAux = new javax.swing.JButton("amarillo",amarillo);
}
else if(numero_aleatorio < 0.5){
jButtonAux = new javax.swing.JButton("verde",verde);
}
else if(numero_aleatorio < 0.75){
jButtonAux = new javax.swing.JButton("naranja",naranja);
}
else{
jButtonAux = new javax.swing.JButton("azul",azul);
}

jButtonAux.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButtonAuxActionPerformed(evt, numero_aleatorio);
}
});

getContentPane().add(jButtonAux);
pack();
}

//ESTE ES EL MÉTODO QUE ME FALLA
private void jButtonAuxActionPerformed(java.awt.event.ActionEve nt evt, double numero_aleatorio_otro) {
javax.swing.JButton jButtonOtro = new javax.swing.JButton();
if (numero_aleatorio_otro < 0.25){
jButtonOtro = new javax.swing.JButton("amarillo",amarillo);
}
else if(numero_aleatorio_otro < 0.5){
jButtonOtro = new javax.swing.JButton("verde",verde);
}
else if(numero_aleatorio_otro < 0.75){
jButtonOtro = new javax.swing.JButton("naranja",naranja);
}
else{
jButtonOtro = new javax.swing.JButton("azul",azul);
}

jButtonOtro.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
JButtonAuxActionPerformed(evt, numero_aleatorio_otro)
//AQUÍ ES DONDE ME FALLA, EXACTAMENTE ME DICE:
//local variable numero_aleatorio_otro is accessed from within inner class; needs to be declared final


}
});


getContentPane().add(jButtonOtro);
pack();


}

Disculpad las molestias y muchas gracias por vuestra atención.
  #2 (permalink)  
Antiguo 22/11/2005, 12:15
 
Fecha de Ingreso: noviembre-2005
Mensajes: 8
Antigüedad: 19 años
Puntos: 0
me había currado las tabulaciones pero el mamón del foro se las ha comido

también indicaros q las variables numero_aleatorio como numero_aleatorio_otro son globales, y que obviamente si las declaro final ya no puedo cambiarlas en tiempo de ejecución que es lo que quiero

si encontrais una solución alternativa a la q yo he planteado también me sirve

muchísimas gracias de nuevo
  #3 (permalink)  
Antiguo 22/11/2005, 13:24
 
Fecha de Ingreso: noviembre-2005
Mensajes: 8
Antigüedad: 19 años
Puntos: 0
no hace falta q os molesteis, ya lo tengo solucionado

muchas gracias a todos de todas formas
  #4 (permalink)  
Antiguo 24/09/2008, 07:50
 
Fecha de Ingreso: julio-2008
Mensajes: 1
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Creación dinámica de botones

como lo solucionast ¿¿ tengo un problema similar en una de esas tambien me srive tu solucion desde ya gracias...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:50.