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