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.