Java:值已更新,但显示保持不变

时间:2016-04-20 15:03:04

标签: java swing subclass superclass listselectionlistener

首先,我必须解释一下软件的架构。 由于代码的很大一部分对于另一个项目来说很常见,我现在正在创建一个包含这段代码的库,所以它只写了一次。

导致我麻烦的视图部分常见,因此其中的一部分现在位于库中。公共部分包括一个可选列表,它允许您打印所选对象的某些属性,以及一个打印所选对象名称的字段。这部分代码位于特定项目中的类扩展的类中。

在这个子类中,我重写了监听器:

@Override
public JList getJListUtilities() {
if (jListUtilities == null) {
    jListUtilities = new JList();
    jListUtilities.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    jListUtilities.setModel(new DefaultListModel());
    jListUtilities
        .addListSelectionListener(new javax.swing.event.ListSelectionListener() {
        public void valueChanged(javax.swing.event.ListSelectionEvent e) {
            if (e.getValueIsAdjusting()) {
            showUtilityParameters((Utility3) ((JList) e.getSource()).getSelectedValue());               }
        }
        });
}
return jListUtilities;
}

在方法showUtilityParameters()中,我修改了视图的许多部分的值,以便它们与实用程序中包含的值匹配。代码工作,值被修改。但是视图仍然打印默认值(如果它们被设置,则它们保持为空),除了对象的名称,正如我之前所说的,它位于库中的超类中。

因此我知道一个解决方案是在超类中声明由showUtilityParameters()修改的所有属性,但是它们在这里没有任何关系,我无法理解为什么它不适用于在里面声明的那些属性子类。

因此,如果有人知道为什么会这样,我会很高兴听到它。

谢谢!

0 个答案:

没有答案