展开全部
//第一种方32313133353236313431303231363533e4b893e5b19e31333332626663法
public class Test extends JFrame{
private JPanel contentPane;
private JTable table;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Test frame = new Test();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public Test() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 705, 502);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
table = new JTable() ;
table.setModel(new DefaultTableModel(
new Object[][] {
{"a", "b", "c", "d"},
{"e", "f", "g", "h"},
},
new String[] {
"New column", "New column", "New column", "New column"
}
));
table.setFillsViewportHeight(true);
contentPane.add(table, BorderLayout.CENTER);
//主要实现代码这往下
TableCellEditor tce= table.getDefaultEditor(JTable.class);
tce.addCellEditorListener(new CellEditorListener() {
@Override
public void editingStopped(ChangeEvent arg0) {
// TODO Auto-generated method stub
System.out.println("结束编辑,自动转入下一行");
table.editCellAt(table.getSelectedRow()+1,table.getSelectedColumn());
}
@Override
public void editingCanceled(ChangeEvent arg0) {
// TODO Auto-generated method stub
System.out.println(arg0);
}
});
table.setCellEditor(tce);
}
}
//第二种方法,只回行进入编辑的话,推荐此方法,简单
table.addKeyListener(new KeyListener() {
public void keyTyped(KeyEvent e) {}
public void keyReleased(KeyEvent e) {
if(e.getKeyChar()=='\n'){
table.editCellAt(table.getSelectedRow(),table.getSelectedColumn());
}
}
public void keyPressed(KeyEvent e) {}
});
不过, jtable默认情况貌似就是自动往下行走哇!好像只是走到下行没进入编辑状态罢了