Java 自动选择JTable的其他行
我想开发一个计费系统swing应用程序,但我在一个地方卡住了。我想在计费后,JTable行选择移动到第一行进行下一次计费,但在提交后会出现最后一行或其他行选择。请帮助我。。。 [按键事件后] 密钥绑定如下所示Java 自动选择JTable的其他行,java,swing,jtable,Java,Swing,Jtable,我想开发一个计费系统swing应用程序,但我在一个地方卡住了。我想在计费后,JTable行选择移动到第一行进行下一次计费,但在提交后会出现最后一行或其他行选择。请帮助我。。。 [按键事件后] 密钥绑定如下所示 InputMap im = cartTable.getInputMap(); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "Action.NextCell"); im.put(KeyStroke.getKeySt
InputMap im = cartTable.getInputMap();
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "Action.NextCell");
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0), "Action.NextCell");
ActionMap am = cartTable.getActionMap();
am.put("Action.NextCell", new AbstractAction(){
@Override
public void actionPerformed(ActionEvent e) {
int col = cartTable.getSelectedColumn();
int row = cartTable.getSelectedRow();
if(col==0 && cartTable.getValueAt(row, col)==null){
ProductListForm productList=new ProductListForm();
productList.setVisible(true);
}else if(col==1 && ProductListForm.product.getName()!=null){
setValueToTable();
}else if(col==7){
calculateValue();
}else if(col==9){
calculateTotal();
row++;
col=-1;
}
col++;
cartTable.changeSelection(row, col, false, false);
cartTable.editCellAt(row, col);
}
});
账单提交代码如下
if(evt.getKeyCode()==KeyEvent.VK_PAGE_DOWN){
JOptionPane.showMessageDialog(this, "Record Saved", "message", JOptionPane.OK_OPTION);
savePurchaseDetails();
saveStockDetails();
resetPage();
updateReturnTable();
int result=JOptionPane.showConfirmDialog(this, "Do you want to print reciept?", "Print Confirmation", JOptionPane.YES_NO_OPTION);
if(result==JOptionPane.YES_OPTION){
}
cartTable.changeSelection(0, 0, false, false);
}
请提供解决方案,以便我们也可以运行它,查看您的问题并提供解决方案。请不要复制/粘贴整个代码,只创建一小段代码,它仍然是可编译、可运行的,并演示您的问题。我真的不知道您在问什么,但您使用的密钥绑定不正确。您不应该使用KeyListener来添加键绑定。使用键绑定时,在创建表时添加绑定,而不是在按下Enter键时添加绑定。JTable已经有一个Enter键的默认操作。因此,您需要用自己的自定义操作“替换”默认操作。更改表中选定行的最简单方法是只使用
changeSelection()
表的方法。您可以查看JTable上当前绑定的列表以及如何更改绑定的示例。现在我使用了键绑定,但问题仍然是一样的。选择移动到最后一行,而我对第一行使用了更改。