如何在JTable中为特定列编写Focus Gained事件?

时间:2015-01-08 10:51:23

标签: java swing jtable

在我的项目中,我使用JTable进行计费。在第一列中,我将给出一些数字作为输入,如我点击标签按钮第二列应该显示产品的名称。我为鼠标点击事件写了它。但我不知道如何写它来获得焦点。我使用的是Netbeans IDE。

    if(table.getSelectedColumn() == 1)
    {
        int row = table.getSelectedRow();
        int column = table.getSelectedColumn();
        int code = Integer.parseInt(table.getValueAt(table.getSelectedRow(), 0).toString());
        if(code < 1 || code > 48)
        {
            JOptionPane.showMessageDialog(this, "Please Enter Correct Product Code");
            return;
        }
        if(table.getValueAt(row, 0) != null)
        {
            table.setValueAt(tamil.get(code-1), row, 1);
        }
    }

这是我的代码,它可以正常点击鼠标。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:1)

  

我为鼠标点击事件写了它。

不要为鼠标事件编写代码。用户使用Tab键移动到下一个单元格的内容是什么?

而是通过覆盖TableModel的setValueAt(...)方法来实现一般解决方案。

更改第一列中的值时,请执行查找并更改第二列中的值。类似的东西:

@Override
public void setValueAt(Object value, int row, int column)
{
    super.setValueAt(value, row, column);

    if (column == 0)
    {
        String name = lookupName(...);
        super.setValueAt(name, row, 1);
    }
}