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){} }

Rispondi quotando
