当前位置: 首页 > 知识库问答 >
问题:

如何将对象从表单元编辑器传递到表模型?

堵毅然
2023-03-14

我有一个有4列的JTable。JTable单元格是可编辑的,并且包含一个AbstractTableModel。我想在第一个单元格将要进入编辑模式时显示一个带有列表的对话框(我已经很好地完成了这一点)。从列表中选择数据后,它返回一个对象(我可以访问该对象)。但是,由于编辑器是JTextField,它将显示来自对象的一个子值(我也这样做过)。但是,当单元格将其位置更改为另一个单元格时,JTable将使用setValueAt方法的值放入table Model。但这一次它只返回由编辑器保存的文本。实际上,它应该返回一个对象,以便将该对象放入表模型中。

我不明白,当JTable自动触发器将单元格值放入表模型时,如何从TableCellEditor类中保存对象并将其传递给setValueAt?为了更好的理解,我在下面提到了我的代码。

public class myobject {
   public String id;
   public String name;
   public String tag;
}


public class My_Table_Cell_Editor extends AbstractCellEditor implements TableCellEditor {

    private myobject curr_val;

    @Override
    public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {

        Component c = table.getEditorComponent(); 

        if(c==null){
            return null;
        }

        if(column == 0){

            MyDialog dg = new MyDialog(null,true);

            dg.setVisible(true);

            if("OK".equals(dg.button_state)){

                ((JTextField)c).setText(dg.return_record.record_name);

                curr_val = dg.return_record;  // return_record is myobject

                fireEditingStopped();
            }
        }                

        ((JTextField)c).selectAll();

        return c;
    }   

    @Override
    public Object getCellEditorValue() {
        return curr_val;
    }
}

public class myTableModel extends AbstractTableModel{

Other codes are as usual...

 @Override
    public void setValueAt(Object value, int row, int col) {
        rec_model rec = rec_arr.get(row);

        switch (col) {
            case 0:
                rec.myobj = (myobject) value;
                break;
        }                
        rec_arr.set(row, rec);
        fireTableCellUpdated(row, col);
    }
}

暂时还没有答案

 类似资料:
  • 问题内容: 可能是一个新手问题,请耐心等待。 我有一个Django表单,可以编辑模型的特定实例。为了知道正在编辑哪个对象,我有一个包含对象ID的隐藏字段以及包含ID的URL。 第一个问题:在隐藏字段中包含对象的ID是否正确? 我(可能是毫无根据的)担心仅将其作为URL的一部分,然后有人可以打开一个对象ID的页面,将表单提交给另一个对象,然后该对象将被覆盖。这就是为什么我要使用隐藏字段的原因。 将I

  • 我有一个带有一个条形图和一个表格的报告。这两个元素由从我的Java应用程序传递到报告的对象列表填充。 现在我想将这两个元素放在两个不同的子报告中,但是我不知道如何将对象列表传递给子报告。我已经将每个对象的字段添加为主报表中的字段和子报表中的参数,但它不起作用。 谁能帮我解决这个问题?

  • 我有一个VBA脚本,可以计算Outlook中选定文件夹中的未读电子邮件。目前,帐户和文件夹名是硬编码到脚本中的,但我想让它可以从excel表单中配置。 当前该变量设置在以下位置: 理想情况下,我希望有一个名为Config的工作表,其数据如下: 有没有人能提供一些关于如何做到这一点的线索?

  • 我已经通过使用PHP从SQL获取数据创建了一个动态表。每一行都有一个链接到模态的编辑按钮。我想把值从表传递到模态,这样我就可以编辑它了。 我已经尝试过循环槽表行,并能够获得不同列的值。但是,每次单击任何编辑按钮时,只有一行的最后一个被传递给Modal上的输入。 这是我的标记:Modal 表 脚本 这是输出输出 当我试图将值打印到控制台时。控制台.日志

  • 假设我在jsp中有这个表单 和Person类 编辑:控制器实现 我没有问题调用其他方法,但测试。

  • 我正在尝试将一个对象(或只是ID)传递给我的控制器,我从下拉列表中选择它。有2个类:产品和类别(产品包含一个外键,这是类别的ID)这是我如何将其加载到: 如您所见,我正在将对象类别传递到我的. jsp中。在那里我显示了用户可以选择的所有类别。 该值应该传递给我的控制器,但我不知道如何传递它。