计算最后一列值的总和并将其放在TextField上?

时间:2015-06-09 07:31:18

标签: java swing jtable

我有一个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中。

2 个答案:

答案 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()方法中的处理保持在最低限度。