我创建了一个包含5列的表。第2列和第3列中的所有单元格都是可编辑的。 第2列有一个默认的JTextField编辑器,只能取数字(0,1,2,3,...,9)。 当第一次加载应用程序时,第2列中的第一个单元格会自动被选中,表格将获得如下焦点。
public void initFocus(){
SwingUtilities.invokeLater(new Runnable()
{
public void run() {
itemsTable.changeSelection(0,2,false,false);
itemsTable.requestFocusInWindow();
}
});
}
我想要实现的目标如下:
我在表格中尝试了此操作,但结果不正常: 有没有人知道如何实现这些目标?一个简单的表的例子将不胜感激。 提前谢谢
itemsTableModel = new DefaultTableModel(){
@Override
public boolean isCellEditable(int row, int column) {
return column == 2 || column==3;
}
};
itemsTableModel.setColumnIdentifiers(new Object[]{"Product", "ItemCode","QTY","Date", "ProductId"});
itemsTable = new JTable(itemsTableModel){
public void changeSelection(int row, int column, boolean toggle, boolean extend)
{
super.changeSelection(row, column, toggle, extend);
if(column==2 && row != -1)
{
if (editCellAt(row, column))
{
Component editor = getEditorComponent();
editor.requestFocusInWindow();
((JTextComponent)editor).selectAll();
}
if(isEditing() && row == itemsTable.getRowCount()-1)
{
super.changeSelection(0, 2, toggle, extend);
Component component = itemsTable.getCellEditor(0,2).getTableCellEditorComponent(itemsTable,getValueAt(row, column),true,row,column);
component.requestFocusInWindow();
((WebTextField)component).selectAll();
}
}
}
};
itemsTable.setDefaultRenderer(Object.class, retrieveItemsTableCellRenderer());
itemsTable.setCellSelectionEnabled(true);