使用setMinimumSize捕获JXTaskPane上的鼠标单击事件(或折叠/展开事件)

时间:2019-04-15 10:11:05

标签: java swing

编辑:我已将其范围缩小到以下事实:我在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

单击以展开或折叠窗格时,不会触发属性更改。我想念什么?

0 个答案:

没有答案