从默认表模型JAVA获取对象

时间:2018-05-27 12:02:21

标签: java swing

我想知道如何将对象(产品)放入表中,并在以后将其作为对象检索。

示例:

public class Controller {

    public Controller() {
        View view = new View(this);
        DefaultTableModel viewDtm = view.getDefaultTableModel();

        //The product i want to put in to the table, and retrieve later on.
        Product product1 = new Product(1,"Cola",2.54);

        viewDtm.addRow(new Object[]{
                product1.getId().toString(),
                product1.getName(),
                product1.getId().toString()
        });
    }
}

我如何在另一个类中检索product1?

1 个答案:

答案 0 :(得分:0)

  

我如何在另一个类中检索product1?

正如所写,你无法做到这一点,这与JTable,TableModel或Swing无关,而且所有与你的变量都被声明为构造函数的本地变量。就像非Swing非GUI程序一样,如果你希望其他类能够检查对象的状态,那么对象的关键字段应该是类的实例(非静态)字段,你应该给它们getter (访问者)方法。

您的代码类似于:

public class Foo {
    public Foo() {
        Bar bar = new Bar();
    }
}

在此设置中,外部类无法访问bar。相反,你想要更像的东西:

public class Foo {
    private Bar bar = new Bar();

    public Foo() {
        // Bar bar = new Bar();
    }

    public Bar getBar() {
        return bar;
    }
}

旁注:我会创建自己的扩展DefaultTableModel或AbstractTableModel的TableModel类,并且还会为其提供允许轻松添加行,传入特定类型的对象以及获取一行数据的方法,返回特定类型的自定义对象。