Java JTable回车键

Java JTable回车键,java,swing,jtable,Java,Swing,Jtable,我正在使用jTable开发一个用于库存管理的应用程序 操作是,通过在jTextField中键入项目代码并按Enter键,该代码的详细信息应显示在jTable中。在那里,我必须输入数量,然后按Enter键来计算数量。但是现在,通过给出项目代码,详细信息进入jTable,我可以输入数量,但在那里,按Enter键jTable焦点进入下一行,没有进行计算。但通过再次按下jTextField上的Enter键,将计算最后输入的金额。我不知道如何解决这个问题,因为我是Java的初学者。我在Netbeans中使

我正在使用
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);
Enter的默认值是表的
WHEN\u FOCUSED\u组件的
输入映射中的
selectNextRowCell
操作。你可以用自己的行动来代替,如下所述

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) {
        ...
    }
}
另请参见(在web.archive.org上镜像)


附录:你可以找到更多的例子,和;最后一个是特定的
JTable

您可以使用Java 8 lambda函数:

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
类应该是这样的:

package com.ozpas.entegre.controller;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.AbstractAction;

public class DelegateAction extends AbstractAction {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    ActionListener myaction = (ae) -> {
        System.out.println("empty action");
    };

    public DelegateAction(ActionListener customaction) {
        this.myaction = customaction;
    }

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

    public ActionListener getMyaction() {
        return myaction;
    }

    public void setMyaction(ActionListener myaction) {
        this.myaction = myaction;
    }

}

谢谢你的回复。但是我对密钥绑定知之甚少。如果你不介意的话,请告诉我在哪里或者如何一步一步地添加代码。我完全困惑了。是的,一开始有点困惑。我发现阅读教程并尝试几个例子很有帮助;更上一层楼,太好了。当需要时,毫不犹豫地更新您的问题或提出一个包含您的问题的新问题。