JTable输入密钥

时间:2012-02-01 05:24:53

标签: java swing jtable

我正在使用jTable开发一个用于库存管理的应用程序。

通过在jTextField中输入项目代码并按 Enter 键,操作是该代码的详细信息应该来到jTable。在那里我必须输入数量并按 Enter 来计算金额。但是现在通过提供商品代码,详细信息会显示在jTable,我可以输入数量,但是按 Enter jTable焦点转到下一行,没有计算正在进行中。但是,再次按下jTextField上的 Enter 键,即可计算最后输入的金额。我不知道如何解决这个问题,因为我是Java的初学者。我在Netbeans中使用MySQL和Java。

我在下面提供该代码..

谢谢..

jTable1.editCellAt(serialNumber, 2);
jTable1.getCellSelectionEnabled();

value1 = new Double(jTable1.getValueAt(serialNumber, 2).toString());
value = new Double(jTable1.getValueAt(serialNumber, 3).toString());
double result = value1 * value;

jTable1.setValueAt(result, serialNumber, 4);

2 个答案:

答案 0 :(得分:28)

Enter 的默认Key Binding是表格selectNextRowCell输入地图中的WHEN_ANCESTOR_OF_FOCUSED_COMPONENT操作。您可以替换自己的操作,如下所述。

private static final String solve = "Solve";
KeyStroke enter = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0);
table.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(enter, solve);
table.getActionMap().put(solve, new EnterAction());
...
private class EnterAction extends AbstractAction {

    @Override
    public void actionPerformed(ActionEvent e) {
        ...
    }
}

另见Keyboard Bindings in Swing(在web.archive.org上镜像)。

附录:您可以找到更多示例hereherehere;最后一个是JTable特定的。

答案 1 :(得分:0)

您可以使用Java 8 lambda函数:

<param name="ConversionPattern" value="%-5p: %c - %m%n" />

final String tustakmaad = "Solve"; KeyStroke enter = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0); panel.getTblBelgetarihiliste().getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put( enter, tustakmaad); panel.getTblBelgetarihiliste().getActionMap().put(tustakmaad, new DelegateAction( ae -> eventMytable_enterkey())); 类应该是这样的:

DelegateAction