• category: swing folder: WindowStateListener title: JFrameの最大化、最小化イベントを取得する tags: [JFrame, WindowStateListener, WindowListener] author: aterai pubdate: 2020-01-06T14:51:22+09:00 description: JFrameの最大化、最小(アイコン)化イベントを取得します。 image: https://drive.google.com/uc?id=13h_n-O0YyO15qpFv76ZEomH-8uWykdNI

概要

JFrameの最大化、最小(アイコン)化イベントを取得します。

サンプルコード

((JFrame) c).addWindowStateListener(e -> {
  String ws;
  switch (e.getNewState()) {
    case Frame.NORMAL:
      ws = "NORMAL";
      break;
    case Frame.ICONIFIED:
      ws = "ICONIFIED";
      break;
    case Frame.MAXIMIZED_HORIZ:
      ws = "MAXIMIZED_HORIZ";
      break;
    case Frame.MAXIMIZED_VERT:
      ws = "MAXIMIZED_VERT";
      break;
    case Frame.MAXIMIZED_BOTH:
      ws = "MAXIMIZED_BOTH";
      break;
    default:
      ws = "ERROR";
      break;
  }
  log.append(String.format("WindowStateListener: %s%n", ws));
});
View in GitHub: Java, Kotlin

解説

上記のサンプルでは、JFrameWindowListenerWindowStateListenerを追加してWindowEventを取得するテストを実行しています。

WindowListenerで通常状態から最小化状態(windowIconified(WindowEvent))、最小化状態から通常状態(windowDeiconified(WindowEvent))は取得可能ですが、最大化イベントはWindowStateListenerを使用してidWINDOW_STATE_CHANGEDWindowEventから取得する必要があります。


  • Windows 10環境で最大化状態はFrame.MAXIMIZED_BOTHのみサポートされているので、例えば垂直方向にフレームを画面端までリサイズして垂直最大化しても、WindowEventは発生しない

参考リンク

コメント