WindowStateListener
コンポーネントが垂直方向、水平方向、またはその両方で最大化されているかどうかがわかります。少なくとも、そうなると言っています。ウィンドウを画面の左端または右端にスナップする以外に、ウィンドウを水平方向または垂直方向のみに最大化する方法がわかりません。この動作の別のリスナーはありますか? または、画面に対するマウスの位置を追跡するものを自分で作成する必要がありますか? 私が説明した内容を表示するサンプル プログラムを作成しました。
SSCCE
import java.awt.Dimension;
import java.awt.event.WindowEvent;
import java.awt.event.WindowStateListener;
import javax.swing.JFrame;
public class Main {
public static void main(String[] args) {
SnapFrame frame = new SnapFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(new Dimension(500,500));
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
class SnapFrame extends JFrame implements WindowStateListener{
public SnapFrame(){
super();
addWindowStateListener(this);
}
@Override
public void windowStateChanged(WindowEvent arg0) {
//will print a statement for all state change events except snapping to left/right edges of screen
System.out.println("state changed");
}
}
このビヘイビアーによって何かをトリガーしたいのに、このイベントを持つリスナーが他にいない場合、画面のサイズを取得し、マウスが画面の端に近づいたときにマウスの位置を監視するのが適切なアイデアでしょうか?