我正在使用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);
答案 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上镜像)。
答案 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