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