编辑:我已将其范围缩小到以下事实:我在JXTaskPane中具有需要设置最小尺寸的表面,否则它将无法完全绘制。如果未设置minimumSize属性,则将按预期方式接收折叠/展开事件。
我有一个(应该是的)沼泽标准问题:一个JXTaskPane我需要捕获折叠或展开时的事件,或者,单击它时触发一个事件,然后查询其isCollapsed状态
这似乎无法通过标准的ActionListener起作用,因为JXTaskPane类不支持那些标准方法。因此,我改为添加了一个属性更改侦听器,认为折叠/展开肯定会更改其属性。奇怪的是,这部分起作用,但是错过了所有折叠/展开事件。
一些最少的代码:
static JXTaskPane mypane = new JXTaskPane();
...
PropertyChangeListener propertyChangeListener = new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent event) {
String property = event.getPropertyName();
System.out.println(property);
System.out.println(event.getNewValue());
}
};
mypane.addPropertyChangeListener(propertyChangeListener);
mypane.setMinimumSize(new Dimension(500,1000));
运行程序时,我通过更改侦听器获得以下属性输出:
[java] minimumSize
[java] java.awt.Dimension[width=500,height=1000]
[java] ancestor
[java] javax.swing.JPanel[,0,0,0x0,invalid,layout=java.awt.GridBagLayout,alignmentX=0.0,alignmentY=0.0,border=javax.swing.border.EmptyBorder@43a0cee9,flags=9,maximumSize=,minimumSize=,preferredSize=]
然后在从窗口Alt移开然后回到它时,我得到了这些焦点丢失的更改:
[java] Frame.active
[java] false
[java] Frame.active
[java] true
单击以展开或折叠窗格时,不会触发属性更改。我想念什么?