我试图在键入/编辑第4列的值时获得第4列的总和。立即更改数字,即当我在第4列的任何行上键入时,它应该更改我在jTextField上设置的总和。
我尝试了TableModelListener和ListSelectionListener,但是由于我必须单击它的行以获取摘要,因此它无法有效工作。
jTable1.getModel().addTableModelListener(new TableModelListener(){
public void tableChanged(TableModelEvent evt){
float sum = 0;
int[] rows = jTable1.getSelectedRows();
for(int i=0;i<jTable1.getRowCount();i++){
try{
sum = sum +
Float.parseFloat(jTable1.getValueAt(rows[i],4).toString());
}
catch(Exception e){
continue;
}
}
jTextField15.setText(Float.toString(sum));
getsummaries();
}
});
我立即更改第4列的值,我希望它是jTextField15上的autosum。
答案 0 :(得分:0)
我还没有解决的办法。在JTable上键入时,很难记录总和。一种解决方法是创建一个按钮,并在jTextField上计算总数。
答案 1 :(得分:0)
它没有有效地工作,因为我必须单击它的行才能获得摘要。
仅当单元格失去焦点时才更新模型,因为那是您输入的值被保存到模型中时。这是因为您可以开始输入数字,然后使用“退出”键取消编辑。
如果您确实要在用户输入编辑器时更新总数,那么您将需要在编辑器使用的文本字段中添加DocumentListener
,而不是使用TableModelListener:
DefaultCellEditor editor = (DefaultCellEditor)table.getDefaultEditor(Integer.class);
JTextField textField = (JTextField)editor.getComponent();
textField.getDocument().addDocumentListener(...);
有关更多信息和示例,请参见Listening For Changes on a Document的Swing教程中的部分。
当然,如果这样做,您将需要在取消编辑器时进行处理。因此,您还需要向PropertyChangeListener
添加JTable
并监听tableCellEditor
属性的变化。