按回车键
keystroke enter=keystroke.getkeystroke(keyevent.vk_enter,0);
my_table.getinputmap(jtable.when_祖_focused_component).put(enter,“nextcolumn”);
my_table.getActionMap().put(“nextColumn”,new abstractAction()。{
@覆盖
已执行的公共无效操作(actionEvent ae){
如果(选中项){
//成本列
if(my_table.editchellat(my_table.getSelectedRow(),4))。{
system.out.println(“列成本编辑…”);
}
itemselected=false;
}其他{
if(my_table.iscelleditable(my_table.getSelectedRow(),4))。{
//数量列
system.out.println(“列数量编辑…”);
my_table.editchellat(my_table.getSelectedRow(),6);
//从这里开始
}else if(my_table.iscelleditable(my_table.getSelectedRow(),6))。{
//自由数量列
system.out.println(“列自由数量编辑…”);
my_table.editchellat(my_table.getSelectedRow(),7);
}else if(my_table.iscelleditable(my_table.getSelectedRow(),7))。{
//dis%列
system.out.println(“列dis%正在编辑…);
my_table.editchellat(my_table.getSelectedRow(),8);
}else if(my_table.iscelleditable(my_table.getSelectedRow(),8))。{
//自由数量列
system.out.println(“列自由数量编辑…”);
defaultTableModel model=(defaultTableModel)my_table.getModel();
model.addrow(new vector());
my_table.setrowselectionInterval(1,1);
}
}
}
})(二)
但当我按Enterkey atqty column时,它不会移动到下一个指定的free_qty column。

任何建议都是可以理解的。
更新
完整的可编译示例
。/**
*
*@作者马都山
*/
导入java.awt.borderlayout;
导入java.awt.event.actionEvent;
导入java.awt.event.keyevent;
导入java.util.vector;
导入javax.swing.abstractAction;
导入javax.swing.jframe;
导入javax.swing.jscrollpane;
导入javax.swing.jtable;
导入javax.swing.keystroke;
导入javax.swing.table.defaultTableModel;
//双击要启动的代码列
公共类jTableCreatingDemo{
private static boolean itemselected=true;
公共静态void main(字符串args[]){
jframe frame=new jframe();
frame.setDefaultCloseOperation(jframe.exit在关闭时退出);
jtable table=new jtable();
table.setModel(新的defaultTableModel(
新建对象[][]{
_1,“PR000003”,“样品项目”,“克”,0.00,0,0,0.0,0.00,0.00_
},请
新字符串[]{
“”,“代码”,“名称”,“单位”,“成本”,“上一个”。余额、“数量”、“自由数量”、“折扣百分比”、“折扣金额”、“金额”
}
){
布尔值[]Canedit=新建布尔值[]{
真、真、假、假、真、假、真、真、真、真、真、假
}(二)
公共布尔不可分类(int rowindex,int columnindex){
return canedit[列索引];
}
})(二)
keystroke enter=keystroke.getkeystroke(keyevent.vk_enter,0);
table.getinputmap(jtable.when ou ancestor ou focused ou component).put(enter,“nextcolumn”);
table.getActionMap().put(“nextColumn”,new abstractAction()。{
@覆盖
已执行的公共无效操作(actionEvent ae){
如果(选中项){
//成本列
if(Table.EditCellAt(Table.GetSelectedRow(),4))。{
system.out.println(“列成本编辑…”);
}
itemselected=false;
}其他{
if(table.iscelleditable(table.getSelectedRow(),4))。{
//数量列
system.out.println(“列数量编辑…”);
table.editcellat(table.getSelectedRow(),6);
}else if(table.iscelleditable(table.getSelectedRow(),6))。{
//自由数量列
system.out.println(“列自由数量编辑…”);
table.editcellat(table.getSelectedRow(),7);
}else if(table.iscelleditable(table.getSelectedRow(),7))。{
//dis%列
system.out.println(“列dis%正在编辑…);
table.editcellat(table.getSelectedRow(),8);
}else if(table.iscelleditable(table.getSelectedRow(),8))。{
//自由数量列
system.out.println(“列自由数量编辑…”);
defaultTableModel模型=(defaultTableModel)table.getModel();
model.addrow(new vector());
表1.setrowselectionInterval(1,1);
}
}
}
})(二)
jscrollpane scrollpane=新建jscrollpane(表);
frame.add(滚动窗格,borderlayout.center);
框架。调整尺寸(800,200);
frame.setVisible(真);
}
}
但当我按下输入钥匙在qty column它不会移动到下一个指定的free_qty column.

任何建议都是可以理解的。
更新
完整的可编译示例
/**
*
* @author Madushan
*/
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.util.Vector;
import javax.swing.AbstractAction;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.KeyStroke;
import javax.swing.table.DefaultTableModel;
// double click on the Code column to start
public class JTableCreatingDemo {
private static boolean itemSelected = true;
public static void main(String args[]) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTable table = new JTable();
table.setModel(new DefaultTableModel(
new Object[][]{
{1, "PR000003", "Sample Item", "Grams", 0.00, 0, 0, 0, 0.0, 0.00, 0.00}
},
new String[]{
"#", "Code", "Name", "Unit", "Cost", "Prev. Bal.", "Qty", "Free Qty", "Dis %", "Dis amount", "Amount"
}
) {
boolean[] canEdit = new boolean[]{
true, true, false, false, true, false, true, true, true, true, false
};
public boolean isCellEditable(int rowIndex, int columnIndex) {
return canEdit[columnIndex];
}
});
KeyStroke enter = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0);
table.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(enter, "nextColumn");
table.getActionMap().put("nextColumn", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent ae) {
if (itemSelected) {
//cost column
if (table.editCellAt(table.getSelectedRow(), 4)) {
System.out.println("column cost editing...");
}
itemSelected = false;
} else {
if (table.isCellEditable(table.getSelectedRow(), 4)) {
//qty column
System.out.println("column qty editing...");
table.editCellAt(table.getSelectedRow(), 6);
} else if (table.isCellEditable(table.getSelectedRow(), 6)) {
//free_qty column
System.out.println("column free_qty editing...");
table.editCellAt(table.getSelectedRow(), 7);
} else if (table.isCellEditable(table.getSelectedRow(), 7)) {
//dis % column
System.out.println("column dis % editing...");
table.editCellAt(table.getSelectedRow(), 8);
} else if (table.isCellEditable(table.getSelectedRow(), 8)) {
//free_qty column
System.out.println("column free_qty editing...");
DefaultTableModel model = (DefaultTableModel) table.getModel();
model.addRow(new Vector());
table.setRowSelectionInterval(1, 1);
}
}
}
});
JScrollPane scrollPane = new JScrollPane(table);
frame.add(scrollPane, BorderLayout.CENTER);
frame.setSize(800, 200);
frame.setVisible(true);
}
}