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)は、最小化状態
(タスクバー格納)から元に戻した時に呼ばれます。

何かのご参考に。

この記事へのコメントはこちら

メールアドレスは公開されませんのでご安心ください。
また、* が付いている欄は必須項目となりますので、必ずご記入をお願いします。

内容に問題なければ、下記の「コメント送信」ボタンを押してください。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)