Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中为jtable中的单元格实现重命名函数_Java_Swing_Jtable_Rename - Fatal编程技术网

在java中为jtable中的单元格实现重命名函数

在java中为jtable中的单元格实现重命名函数,java,swing,jtable,rename,Java,Swing,Jtable,Rename,作为一个初学者,我正在创建一个jtable,它具有一些功能,比如添加和删除内容。我想知道如何使我的应用程序的重命名功能,选择此菜单时,应突出显示编辑模式下单元格的所有内容。提前感谢继续您的演讲。当你点击上下文菜单中的“编辑”时,你想在弹出窗口中进行编辑吗 → 您几乎已经拥有了用于此功能的工具(在代码中)。对于新操作,只需显示一个带有选定单元格值的JOptionPane输入对话框。JOptionPane的返回输入将是您设置回表的值。差不多。但是请记住,根据数据的类型,您可能需要执行一些逻辑解析或

作为一个初学者,我正在创建一个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);
}