我有一个Jtable,其中包含数量,价格和数量的列。如果用户输入数量和价格,金额值将在密钥释放时显示。它工作得很好。
我在表格下面还有一个文本字段,它显示了表格最后一列值的总和。
当用户更改数据时,JTextField值也会同时更改。
现在我正在使用鼠标点击事件。单击textField时,它将计算表格最后一列值的总和并显示。
任何人都可以帮助我吗?
这是我的代码:
int rowCount = Table.getRowCount();
int lastRow = rowCount - 1;
//System.out.println("Last Row = " + lastRow);
//System.out.println("Last Row Value is = " + Table.getValueAt(lastRow, 0));
if (Table.getValueAt(lastRow, 0) == null) {
DefaultTableModel tmodel = (DefaultTableModel) Table.getModel();
tmodel.removeRow(lastRow);
}
else {
double value;
double total = 0;
//System.out.println("Row Count = " + rowCount);
for (int i = 0; i < rowCount; i++) {
value = (double) Table.getValueAt(i, 5);
total = total + value;
}
totalField.setText(new DecimalFormat("##.##").format(total));
}
但我不想要这种机制。
当用户输入某些值或修改值时,该值将反映在Textfield中。
答案 0 :(得分:0)
我相信您需要focusListener
textField
,当用户点击此textField
时,此事件会被触发。
从表中获取值并在此处进行数学运算。
JTextField textField = new JTextField("A TextField");
textField.addFocusListener(new FocusListener() {
public void focusGained(FocusEvent e) {
//do here
}
答案 1 :(得分:0)
而不是MouseListener
,在JTable上使用KeyListener
。
table.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent arg0) {
// You can set the value of textField to the value of Jtable column here.
}
@Override
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void keyPressed(KeyEvent arg0) {
// TODO Auto-generated method stub
}
});
但请注意,表列上的每次击键都会调用它。因此,您应该将keyTyped()
方法中的处理保持在最低限度。