JFrameの最大化、最小化イベントを取得する
Total: 5339, Today: 1, Yesterday: 0
Posted by aterai at
Last-modified:
Summary
JFrameの最大化、最小(アイコン)化イベントを取得します。
Screenshot

Advertisement
Source Code Examples
((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, KotlinDescription
上記のサンプルでは、JFrameにWindowListenerとWindowStateListenerを追加してWindowEventを取得するテストを実行しています。
WindowListenerで通常状態から最小化状態(windowIconified(WindowEvent))、最小化状態から通常状態(windowDeiconified(WindowEvent))は取得可能- だだし最大化イベントは
WindowStateListenerを使用してidがWINDOW_STATE_CHANGEDのWindowEventから取得する必要がある Windows 10環境の最大化状態のうちToolkitでサポートしているのはFrame.MAXIMIZED_BOTHのみなので、たとえば垂直方向にフレームを画面端までリサイズして垂直最大化してもWindowEventは発生しない- Toolkit#isFrameStateSupported(...) (Java Platform SE 8)
Frame.MAXIMIZED_HORIZ: サポート無しFrame.MAXIMIZED_VERT: サポート無しFrame.MAXIMIZED_BOTH: サポート在り
Reference
- How to Write Window Listeners (The Java™ Tutorials > Creating a GUI With JFC/Swing > Writing Event Listeners)
- WindowStateListener (Java Platform SE 8)
- WindowEvent#getNewState() (Java Platform SE 8)
- JInternalFrameの最大化、最大化からの復元イベントを取得する
JInternalFrameも最大化イベントをInternalFrameListenerからの直接取得は不可