在JInternalFrame

时间:2016-07-06 08:14:15

标签: java swing

在Java Swing教程中,在How to Write an Internal Frame Listener部分中,它提供了演示代码来捕获关闭或最小化(图标化)JInternalFrame窗口的事件。

然而,演示中未捕获最大化和恢复事件,似乎没有方法可以在InternalFrameAdapter类或InternalFrameEvent中的相对字段中捕获这些事件。

如何捕获用户点击最大化/恢复按钮的事件?

1 个答案:

答案 0 :(得分:2)

您可以使用PropertyChangeListenerJInternalFrame#IS_MAXIMUM_PROPERTY

//Add an internal frame listener so we can see
//what internal frame events it generates.
listenedToWindow.addInternalFrameListener(this);

listenedToWindow.addPropertyChangeListener(evt -> {
  String prop = evt.getPropertyName();
  JInternalFrame f = (JInternalFrame) evt.getSource();
  Object newValue = evt.getNewValue();
  if (JInternalFrame.IS_MAXIMUM_PROPERTY == prop) {
    String prefix;
    if (newValue == Boolean.TRUE) {
      prefix = "Internal frame maximized : ";
    } else {
      prefix = "Internal frame minimized : ";
    }
    String s = prefix + f;
    display.append(s + newline);
    display.setCaretPosition(display.getDocument().getLength());
  }
});
//...