Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/02/2018, 23:22
sgrajaleshdz
 
Fecha de Ingreso: marzo-2016
Ubicación: World Wide Web
Mensajes: 30
Antigüedad: 8 años, 8 meses
Puntos: 3
Pregunta Problema con array de botones que escuchen 2 eventos

Hola, Saludos a todos... Ya se de nuevo aquí molestando

Esta vez tengo un problema con un 'array de botones', pasa que por medio de una clase se crean y escuchan a un 'ActionListener' que se encuentra en el mismo array, intento que el los botones escuchen 2 instrucciones, la primera vez que efectué la primer acción 'Desbloquear el PC' y la segunda que revierta es decir 'Bloquee el PC'

El codigo es el siguiente:
Código Java:
Ver original
  1. public void init(List<String> clients) {
  2. //Clients recibe las ip de los clientes que se conectan a mi servidor
  3.     int a = Integer.parseInt(numM.getText());
  4.     int x = clients.size(); //Aquí leo cuantos son y dependiendo de eso se crea en num de botones
  5.    
  6.        if(x!=a){
  7.        
  8.            Pcs.removeAll();
  9.            Pcs.repaint();
  10.            pack();
  11.            
  12.             JButton[] botones =new JButton[x];
  13.        
  14.             for (int i=0; i<botones.length; ++i){
  15.                     botones[i]=new JButton("Libre PC"+(1+i));
  16.                     String pc = clients.get(i);
  17.                     //botones[i]=new JButton(pc);
  18.                     //botones[i].setBorder(null);
  19.                     //botones[i].setBorderPainted(false);
  20.                     //botones[i].setContentAreaFilled(false);
  21.                     botones[i].setDefaultCapable(false);
  22.                     //botones[i].setFocusPainted(false);
  23.                     //botones[i].setFocusable(false);
  24.                     botones[i].setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
  25.                     botones[i].setVerticalAlignment(javax.swing.SwingConstants.BOTTOM);
  26.                     botones[i].setToolTipText(pc);
  27.                     Pcs.add(botones[i]);
  28.                     repaint();
  29.                     numM.setText(String.valueOf(x));
  30.                    
  31.                     botones[i].addActionListener(new ActionListener() {
  32.                        @Override
  33.                        public void actionPerformed(ActionEvent ae) {
  34.                            /////////////////////////////////////////////////////////////////                                
  35.                                    
  36.                            for(int j=0;j<botones.length;j++){
  37.                                         int num=j+1;
  38.                                        
  39.                                     if( botones[j].getText().equals("Libre PC"+num) )
  40.                                         {
  41.                                         System.out.println("Libre PC"+num);
  42.                                         String a = botones[j].getToolTipText();
  43.                                         botones[j].setText("Ocupada PC"+num);
  44.                                         blo(a);
  45.                                         break;
  46.                                         }
  47.                                        
  48.  // He probado quitar, cambiar y dejar en uno o en otro el 'break' pero ni así funciono
  49.                                    
  50.                                         if( botones[j].getText().equals("Ocupada PC"+num) )
  51.                                         {
  52.                                         System.out.println("Ocupada PC"+num);
  53.                                         String a = botones[j].getToolTipText();
  54.                                         botones[j].setText("Libre PC"+num);
  55.                                         desblo(a);
  56.                                         break;
  57.                                         }
  58.                                        
  59.                                        
  60.                                    
  61.                                     }
  62.     ///////////////////////////////////////////////////////////////////////////                                
  63.                        }
  64.                    });
  65.                     pack();
  66.             }
  67.        }
  68.     }

Tuve que usar otro 'for' con 'int j', por que no me dejaba usar 'i' y el problema de hacerlo global es que 'i' suma sus valores y ya no coinciden los nombre de botón

Espero puedan ayudarme, pues no encuentro como ya probé usando while antes y después del 'for' con 'int j'

Gracias, por leerme
__________________
Desbloquea esos limites...