2016-01-14 20 views
-1

我注意到當我將光標移動到表格的任何單元格上時,函數'getValueAt'被調用,向Eclipse控制檯顯示其輸出。只是想知道爲什麼,不應該只在我創建tableModel對象時調用它?getValueAt在鼠標上調用單元格

我創建了一個類,ModelloTabella它實現的TableModel和 這是的TableModel getValueAt實現:

@Override 
public Object getValueAt(int rowIndex, int columnIndex) { 
    Studente tmp=arrayStudenti.get(rowIndex); 
    if(columnIndex==0){ 
     System.out.println("Stampo da getValueAt Matricola"); 
     return tmp.getMatricola(); 
    }else if(columnIndex==1){ 
     System.out.println("Stampo da getValueAt Nome"); 
     return tmp.getNome(); 
    }else{ 
     System.out.println("Stampo da getValueAt Cognome"); 
     return tmp.getCognome(); 
    } 

} 

這是在創建對象 'ModelloTabella' 其中。我認爲功能在這裏僅稱爲:

model = new ModelloTabella(this.controller.caricaStudenti(),controller); 
      Tabella.setModel(model); 
+1

請給我們您的源代碼請! – KostasC

回答

2

的方法是通過JTable(典型值)每當表需要渲染單元格時調用(和可能是一些其他原因),當在單元格你的鼠標,你實際上會觸發一個工具提示事件,JTable首先得到的單元格值,然後將該值傳遞到CellRenderer,然後JTable檢查相應的Component以查看它是否具有toolTipText值,如果有,則會顯示該值,否則將顯示該表格toolTipText值顯示

JTable不緩存內部值,這就是模型的用途。因爲使用相同的CellRenderer呈現給定列的所有單元格,所以也無法緩存這些列的結果。所以,JTable需要問型號的一些信息

相關問題