我有一个表类,用来创建修改项目的表。我想使用表格模型在JTable中显示这些项目。对我来说,表格模型属于我的GUI包,但是表格需要表格模型来触发更改,而表格模型需要表格类来显示它,所以我不能将这两者分开。如果你需要这样做,你使用的类结构是什么?或者,我的思维中有一个流程,它们属于同一个包?
发布于 2008-10-03 17:19:29
TableModel是一种适配器。我总是编写表格模型来扩展AbstractTableModel,并将其作为我的图形用户界面面板类的私有内部类。您只需填写几个方法:getRowCount、getColumnCount和getValueAt
您的GUI类应该能够访问一些控制器,它可以在其中填充此信息。当您的控制器发现数据更新时,它应该通知您的GUI类,然后GUI类可以调用AbstractTableModel.fireTableDataChanged或其他适当的方法。
千万不要使用DefaultTableModel类,因为这样您就必须保持表模型的数据与控制器的数据同步。
发布于 2008-10-03 14:14:02
对我来说,tablemodel是小部件的一部分,也就是GUI。我不会在我的业务逻辑类中依赖javax.swing包。
因此,您将使用适配器或其他机制从业务层加载表模型,但这种分离程度可能很有用。
决策还取决于项目的规模,而且可能比这复杂得多。例如,有关更抽象的情况,请参阅jgoodies binding框架和文档。
发布于 2008-10-03 14:18:18
模型是保存数据的位。它应该像这样的模型一样维护和释放监听程序。
现在,您可能需要在模型中使用某种委托来转换数据或调整类型。因此,您将数据放在一个模型对象中,该对象不一定与javax.swing.table有任何关系。然后实现一个委托给底层模型的TableModel。使用该TableModel创建一个JTable,但不引用底层模型。
https://stackoverflow.com/questions/166996
复制相似问题