ciao ragazzi
ho un problema con il MyTableModel, cioè una classe modello che visualizza meglio un JTable
(in pratica mi carica i colori, mi visualizza i flag, ecc.), però ho un problema...
in pratica nelle celle che mi visualizzano i flag, se li attivo con l'evento mouseclicked funziona, solo che se provo a cliccare tante volte e velocemente , la variabile che è riferita al flag cambia, mentre la parte visiva del flag no, quindi succede che magari il flag è cambiato e la variabile no...
non cè un regolatore del mouseclicked...
questo è il codice del modello

codice:
 private int flag = 0; //flag 0 indica che sto utilizzando tabella pagina senza flag
   public int c=0;  
    
   public void MyTable_script(Object[][] data_script) {
       flag = 1;//flag 1 indica che sto utilizzando tabella script con flag
       this.data_script= data_script;  } 
   public void MyTableScriptNoFlag(Object[][] data_script_noflag) {
       flag = 2;//flag 2 indica che sto utilizzando tabella script senza flag
       this.data_script_noflag= data_script_noflag;  }  
   public void MyTable(Object[][] data) {
       flag = 0;//flag 0 indica che sto utilizzando tabella script senza flag
      this.data= data;} 
   public void MyTable_withflag(Object[][] data_withflag) {
       flag = 3;//flag 0 indica che sto utilizzando tabella script senza flag
      this.data_withflag= data_withflag;}
         
   public int getColumnCount() {
       int count=0;               switch (flag) {
                                        case 0: count= columnNames.length; break;
                                        case 1: count= columnNamesScript.length; break;
                                        case 2: count= columnNamesScriptNoflag.length; break;
                                        case 3: count= columnNames_withflag.length; break;
       }
       return count;   }
 
   public int getRowCount() {
       int count=0;               switch (flag) {
                                        case 0: count= data.length; break;
                                        case 1: count= data_script.length; break;
                                        case 2: count= data_script_noflag.length; break;
                                        case 3: count= data_withflag.length; break;
                                                 }
       return count;   }
    
   public String getColumnName(int col) {
        String nome=null;               switch (flag) {
                                        case 0: nome= columnNames[col]; break;
                                        case 1: nome= columnNamesScript[col]; break;
                                        case 2: nome= columnNamesScriptNoflag[col]; break;
                                        case 3: nome= columnNames_withflag[col]; break;
                                                 }
       return nome; 
       }
    
   public Object getValueAt(int row, int col) 
   {   Object nome=null;               switch (flag) {
                                        case 0: nome= data[row][col]; break;
                                        case 1: nome= data_script[row][col]; break;
                                        case 2: nome= data_script_noflag[row][col]; break;
                                        case 3: nome= data_withflag[row][col]; break;
                                                 }
       return nome; 
          
   }
   //QUESTA CLASSE MI PERMETTE DI VISUALIZZARE IL FLAG IN TABELLA 
   public Class getColumnClass(int c) {
	   Class valore=null; 
	   try{
                     switch (flag) {
                                        case 0: valore= getValueAt(0, c).getClass(); break;
                                        case 1: valore= getValueAt(0, c).getClass(); break;
                                        case 2: valore= getValueAt(0, c).getClass(); break;
                                        case 3: valore= getValueAt(0, c).getClass(); break;
       }
       }
       catch (NullPointerException e){
    	   errori er= new errori();
    	   er.errori(1,"");
       }
        return valore; 
   }
   
   public boolean isCellEditable(int row, int col) {
      boolean edit=false; 
        switch (flag) { 
            case 0: if (col < 0) {edit=true;} else {edit =false;} break;
            case 1: if (col < 1) {edit=true;} else {edit =false;} break;
            case 2: if (col < 0) {edit=true;} else {edit =false;} break;
            case 3: if (col < 1) {edit=true;} else {edit =false;} break;
        }
     return edit;
        
    }     
    public void setValueAt(Object value, int row, int col) {
            if (DEBUG) {
                System.out.println("Setting value at " + row + "," + col
                                   + " to " + value
                                   + " (an instance of "
                                   + value.getClass() + ")");
            }
            
            switch (flag) { 
            case 0: data[row][col] = value; break;
            case 1: data_script[row][col] = value;  break;
            case 2: data_script_noflag[row][col] = value;  break;
            case 3: data_withflag[row][col] = value;  break;
            }
            
            
            if (DEBUG) {
                System.out.println("New value of data:");
                printDebugData();
            }
        } 
   private void printDebugData() {
            int numRows = getRowCount();
            int numCols = getColumnCount();

            for (int i=0; i < numRows; i++) {
                System.out.print("    row " + i + ":");
                for (int j=0; j < numCols; j++) {
                    switch (flag) { 
            case 0: System.out.print("  " + data[i][j]); break;
            case 1: System.out.print("  " + data_script[i][j]); break;
            case 2: System.out.print("  " + data_script_noflag[i][j]); break;
             case 3: System.out.print("  " + data_withflag[i][j]); break;
                    }
                }
                System.out.println();
            }
            System.out.println("--------------------------");
        } 
    public void setUpSportColumn(JTable table,TableColumn colonna) {
        // colonna.setCellEditor(new DefaultCellEditor(comboBox));
        //settaggio caratteristiche della cella (renderer)        
        DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
        renderer.setToolTipText("Clicca per vedere il codice");
        renderer.setForeground(java.awt.Color.RED);  
        colonna.setCellRenderer(renderer);
        
       } 
    
    public void SetUpModifica(JTable table, TableColumn column1, TableColumn column2) {
        // colonna.setCellEditor(new DefaultCellEditor(comboBox));
        //settaggio caratteristiche della cella (renderer)        
         try{
        DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
        column1.sizeWidthToFit();
        renderer.setToolTipText("Clicca per modificare");
        renderer.setBackground(java.awt.Color.RED); 
        renderer.setEnabled(true);
        column1.setCellRenderer(renderer);
        column2.setCellRenderer(renderer);
        table.setBackground(java.awt.Color.GRAY);
         }
        catch (ClassCastException e){}
       }