JavaSwing中模型组件的多个实例?
到目前为止,我为相应的JavaSwing组件提供了不同的模型类,例如,我为几个JavaSwing中模型组件的多个实例?,java,model-view-controller,swing,jtable,tablemodel,Java,Model View Controller,Swing,Jtable,Tablemodel,到目前为止,我为相应的JavaSwing组件提供了不同的模型类,例如,我为几个JTable提供了几个TableModel。每个JTable都有自己的TableModel。TableModel基于一个对象(Model),提供所有必需的数据。大概是这样的: public class MyTableModel extends AbstractTableModel { Model model; 但现在我想做个改变。我的界面提供了模型的多个实例的可能性。所以我的问题是,我应该怎么做 从MyTable
JTable
提供了几个TableModel
。每个JTable
都有自己的TableModel
。TableModel
基于一个对象(Model
),提供所有必需的数据。大概是这样的:
public class MyTableModel extends AbstractTableModel {
Model model;
但现在我想做个改变。我的界面提供了模型
的多个实例的可能性。所以我的问题是,我应该怎么做
- 从
MyTable
- 在用户交互时动态更改对模型的当前引用
JTable
和相同的TableModel
。我应该使用多个TableModel
还是应该使用对数据源的更改引用
类似问题: 我想提供多个选项卡,它们更改基础模型的实例。不会更改类型,但会更改当前实例-也就是说,数据会更改 我现在应该:
- 实例化视图组件的多个对象?例如,为每个可用模型实例化一个自己的
,JTable
,JPanel
对象JScrollPane
- 通过侦听选项卡式窗格上的更改事件(即underyling模型的引用)动态更改
fireTableDataChanged
)。
这将更有效,并允许保持当前列顺序、当前已排序列等
如果表的结构完全更改,则更改模型本身可能更容易。您也可以调用
fireTableStructureChanged
,但此方法的javadoc说明:
这和打电话一样
JTable上的setModel(TableModel)
关于选项卡,可以遵循相同的规则。如果您将有多个选项卡,并且不同的选项卡具有不同的型号,那么答案很简单,您需要不同的表。每个选项卡至少有一个 同样,如果您有多个选项卡,那么您还需要多个JSCRollPane等
然而,如果您要为一个表设置一个点,那么如果您没有对表进行自定义,那么您可能可以使用一个JTable和多个模型。(见mKorbel的评论)。无论哪种方式,您都可以重用同一个JScrollPane。对我来说,每个JTable都有自己的TableModel,因为每个JTable都可以有不同的TableModel(Defalut/Abstract)、不同的ColumnModel、RowModel、RowFilter、RowSorter、MVC规则,并以prepareRenderer中的定义结尾,总之,好问题+1