[英]Java Swing - inform GUI about changes to the model
我在JTable中有一个列绑定到业务对象列表上的底层布尔属性。 我还有一个组合框,应该选择应该选择哪些项目。 我基本上将以下代码添加为组合框的处理程序:
macroCombo.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JComboBox comboBox = (JComboBox) e.getSource();
Predicate filter = (Predicate) comboBox.getSelectedItem();
for(SelectableKey key : tableEntries){
key.setSelected(filter.evaluate(key));
}
}
});
我还想根据值改变一些其他控件。 目前,表中只有少数单元格会更改其状态以进行选择/取消选择。 只有当我单击该行或选择多行时,UI才会自行更新。 是否有来自我需要做的处理程序的调用来告诉GUI重绘自己? ALOS,如果我修改除JTable之外的其他控件,我怎么告诉他们改变他们的状态?
谢谢
当您更新TableModel
的值时,模型应该触发相应的TableModelEvent
(类型: UPDATE
)。
例如,如果您的TableModel
从AbstractTableModel
扩展,则可以在进行更改后调用fireTableRowsUpdated
方法。
另一种方法是TableModel
,它知道何时更新(例如通过向其包含的对象添加侦听器)。 这允许其他代码简单地更新TableModel
包含的对象,而无需了解TableModel
。 然后,当TableModel
检测到对其包含的对象所做的更改时,它将自动触发该事件。
我更喜欢第二种方法,因为这避免了我必须将TableModel
传递给我所有其他类。
有关更多信息,请参阅表格教程 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.