РЕДАКТИРОВАТЬ: я сузил это до того факта, что у меня есть поверхность в JXTaskPane, которая требует минимального размера, в противном случае он не будет рисовать полностью.Если не задано свойство минимального размера, события коллапса / развертывания принимаются, как и ожидалось.
У меня (как мне кажется, должна быть) стандартная проблема болота: 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-tabbing от окна и обратно к нему, я получаю эти потерянные фокус изменения:
[java] Frame.active
[java] false
[java] Frame.active
[java] true
При нажатии, чтобы развернуть или свернуть панель, нет свойстваизменение вызвано.Чего мне не хватает?