getValueAt 在鼠标悬停在单元格上时调用
getValueAt called on mouse over cell
我注意到当我将光标移动到 table 的任何单元格上时,函数 'getValueAt' 被调用,并在 Eclipse 控制台中显示其输出。只是想知道为什么,不应该只在我创建 tableModel 对象时调用它吗?
我创建了一个 class,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);
每当 table 需要呈现单元格(可能出于其他原因)时,JTable
(通常)调用该方法,当您将鼠标悬停在单元格上时,实际上会触发tooltip 事件,JTable
首先获取单元格值,然后将此值传递给 CellRenderer
,JTable
然后检查相应的 Component
以查看它是否具有 toolTipText
值,如果有则显示,否则显示tables toolTipText
值
JTable
不会在内部缓存值,这就是模型的用途。因为相同的 CellRenderer
用于呈现给定列的所有单元格,所以也不可能缓存这些结果。因此,JTable
需要向模型询问一些信息
我注意到当我将光标移动到 table 的任何单元格上时,函数 'getValueAt' 被调用,并在 Eclipse 控制台中显示其输出。只是想知道为什么,不应该只在我创建 tableModel 对象时调用它吗?
我创建了一个 class,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);
每当 table 需要呈现单元格(可能出于其他原因)时,JTable
(通常)调用该方法,当您将鼠标悬停在单元格上时,实际上会触发tooltip 事件,JTable
首先获取单元格值,然后将此值传递给 CellRenderer
,JTable
然后检查相应的 Component
以查看它是否具有 toolTipText
值,如果有则显示,否则显示tables toolTipText
值
JTable
不会在内部缓存值,这就是模型的用途。因为相同的 CellRenderer
用于呈现给定列的所有单元格,所以也不可能缓存这些结果。因此,JTable
需要向模型询问一些信息