首先,我必须解释一下软件的架构。 由于代码的很大一部分对于另一个项目来说很常见,我现在正在创建一个包含这段代码的库,所以它只写了一次。
导致我麻烦的视图部分常见,因此其中的一部分现在位于库中。公共部分包括一个可选列表,它允许您打印所选对象的某些属性,以及一个打印所选对象名称的字段。这部分代码位于特定项目中的类扩展的类中。
在这个子类中,我重写了监听器:
@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()修改的所有属性,但是它们在这里没有任何关系,我无法理解为什么它不适用于在里面声明的那些属性子类。
因此,如果有人知道为什么会这样,我会很高兴听到它。
谢谢!