在java中为jtable中的单元格实现重命名函数
作为一个初学者,我正在创建一个jtable,它具有一些功能,比如添加和删除内容。我想知道如何使我的应用程序的重命名功能,选择此菜单时,应突出显示编辑模式下单元格的所有内容。提前感谢继续您的演讲。当你点击上下文菜单中的“编辑”时,你想在弹出窗口中进行编辑吗 → 您几乎已经拥有了用于此功能的工具(在代码中)。对于新操作,只需显示一个带有选定单元格值的JOptionPane输入对话框。JOptionPane的返回输入将是您设置回表的值。差不多。但是请记住,根据数据的类型,您可能需要执行一些逻辑解析或转换。下面我只是将值作为字符串在java中为jtable中的单元格实现重命名函数,java,swing,jtable,rename,Java,Swing,Jtable,Rename,作为一个初学者,我正在创建一个jtable,它具有一些功能,比如添加和删除内容。我想知道如何使我的应用程序的重命名功能,选择此菜单时,应突出显示编辑模式下单元格的所有内容。提前感谢继续您的演讲。当你点击上下文菜单中的“编辑”时,你想在弹出窗口中进行编辑吗 → 您几乎已经拥有了用于此功能的工具(在代码中)。对于新操作,只需显示一个带有选定单元格值的JOptionPane输入对话框。JOptionPane的返回输入将是您设置回表的值。差不多。但是请记住,根据数据的类型,您可能需要执行一些逻辑解析或
class EditCellAction extends AbstractAction {
private JTable table;
public EditCellAction(JTable table) {
putValue(NAME, "Edit");
this.table = table;
}
@Override
public void actionPerformed(ActionEvent e) {
int row = table.getSelectedRow();
int col = table.getSelectedColumn();
String newValue = JOptionPane.showInputDialog(table,
"Enter a new value:", table.getValueAt(row, col));
((DefaultTableModel) table.getModel()).setValueAt(
newValue, row, col);
}
}
如果不想弹出窗口,只想以编程方式启动单元格编辑,可以简单地使用table.editCellAt(row,col)
启动编辑,并使用单元格编辑器的底层文本字段选择字段内容。类似于下面的内容(经过测试并有效)
但是请记住,如果单元格是可编辑的,用户只需双击该单元格即可对其进行编辑。我想这会增加更多功能好吧,一次只能有一个单元格处于编辑模式…大声想想,您可能能够“突出显示”所有匹配项,将第一个匹配项置于“编辑模式”,并在接受时重命名模型中的所有其他匹配项…您需要某种方式来标记模型,以使其能够执行编辑操作“搜索和替换“当调用
setValueAt
时……您可以查看@camickr的文章表selectall编辑器,引用。@这就是我答案的第二部分;-)我对OP的要求不是很确定,所以我发布了两个选项。是的,P遗漏了这一部分:P@user3884321看电影的最好地方。它们提供了使用swing所需的大部分细节。这是一个很大的教程,所以你需要到处搜索你想要的东西。
@Override
public void actionPerformed(ActionEvent e) {
int row = table.getSelectedRow();
int col = table.getSelectedColumn();
table.editCellAt(row, col);
JTextField field = (JTextField) ((DefaultCellEditor) table
.getCellEditor()).getComponent();
field.requestFocus();
field.setSelectionStart(0);
int endSelection =
(!field.getText().isEmpty()) ? field.getText().length() -1 : 0;
field.setSelectionEnd(endSelection);
}