【问题标题】:Populating a table in a GUI with MVC architecture使用 MVC 架构在 GUI 中填充表
【发布时间】:2013-05-24 08:19:16
【问题描述】:

我已经根据 MVC 模式重新构建了我的 GUI,但我不确定如何在我的视图中填充 JTable。到目前为止,我的代码是:

查看:

public class GUIview extends JFrame {
...
    // set Table Inputs info
public void setTableInfo(List<Object[]> listTable) {
    for (int i = 0; i < listTable.size(); i++) {
        Object[] tempArray = listTable.get(i);
        ((DefaultTableModel) getTableModel()).insertRow(i, tempArray);
    }
}

控制器。

public class GUIcontroller {
...
       m_view.setTableInfo(m_model.getList());

型号

public class GUImodel {
...
    public List<Object[]> getList() {
        return resultsList;
    }

我想编写尽可能接近 MVC 的代码。这是最合适的方法吗?我的意思是,视图不应包含仅用于呈现视图的代码。我正在考虑将“for”循环移动到控制器,然后为 insertRow 调用视图函数。是不是更好?

【问题讨论】:

    标签: java swing model-view-controller user-interface jtable


    【解决方案1】:

    GUI 中,您只需将模型设置为JTableTableModel 应该会处理所有与数据相关的问题,例如添加行、删除行、设置值、更新单元格值。

    你可以通过这个example

    【讨论】:

    • 谢谢车。我已经查看了这个example,但是我应该在哪里放置类“TableData”和“AllTableModel”?我必须为他们创建一个适当的文件吗?或者也许把它们变成我的“GUIview”类的内部类?
    • 内部课程不适用。为TableModel 创建一个单独的类。在模型中填充数据,或者从文件中获取数据(比如一个单独的fileIO 类),或者在模型中编写一个方法来返回模型中的虚拟数据。
    【解决方案2】:

    我认为你应该向模型添加元素,如果一切都设置好,表格应该在屏幕上填充。

    【讨论】:

    • 您能详细解释一下吗?我考虑过使用jGoodies Binding 框架,是你说的吗?感谢 Marko Frelih
    • 好吧,根据JTable docs,首先你应该继承TableModel,它包含数据本身。然后通过 setModel 将模型应用到 JTable,然后子类化单元格渲染器。
    • 嗯,这听起来很有趣,也很合乎逻辑。让我们调查一下……再次感谢 Marko Frelih
    猜你喜欢
    • 1970-01-01
    • 2015-04-09
    • 2014-07-13
    • 1970-01-01
    • 2021-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多