Javaで(Frameなどの)移動やサイズ変更を検出する方法
こんにちは、イガジー@管理人です。
Java は取り組みやすい言語だと思うのですが、
似たような(似ている気がする)処理が
妙に別々の所にあったりするので戸惑う事があります。
GUIのプログラミングで、窓(Frame)を閉じたり
最小化したりするのには、
WindowListener(WindowsAdapter)を使います。
では、移動やサイズ変更は?と探してみると、これは
ComponentListener(ComponentAdapter)でした。
ちなみにフォーカス関係は、FocusListenerです。
このように細分化されているのは、何か理由があったので
しょうが、(慣れるまでは)探すのが大変です。
(「こういうものだ」と覚えるしかないでしょう。)
Eclipseを使っている場合は、Listener の大枠、例えば
class CompProc implements ComponentListener {
と書くと、「未実装な関数があるよ」と
}
出てくるので、「補完してね」キー(※)を押すと
class CompProc implements ComponentListener {
と、サポートされているイベント処理関数が生成されます。
@Override
public void componentHidden(ComponentEvent e) {
}
@Override
public void componentMoved(ComponentEvent e) {
}
@Override
public void componentResized(ComponentEvent e) {
}
@Override
public void componentShown(ComponentEvent e) {
}
}
これを見るとどんなイベントがあるかが分かります。
この中のcomponentMoved(ComponentEvent e) が
(窓をつまんで)移動させた時に呼ばれ、
componentResized(ComponentEvent e)が、
(窓の隅をつまんで)サイズ変更した時に呼ばれます。
Hidden と Shown は、何をしたら呼ばれるかが不明です(Linux の場合)。
(※)「補完してね」キーは、WindowsとMAC OS Xの場合は、
[CTRL]+[SPACE] で、Linuxの場合は、[ALT]+[/] です。
WindowsListener(WindowAdapter)では、
windowClosing(WindowEvent e) が、窓を閉じるボタン
(通常ウインドウタイトルバーにある[X])を押した時に呼ばれます。
windowIconified(WindowEvent e)は、最小化ボタン[_]を押した時、
windowOpened(WindowEvent e)は、最小化状態
(タスクバー格納)から元に戻した時に呼ばれます。
何かのご参考に。
この記事へのコメントはこちら