JFrame設定最大サイズ

1392 ワード

窓口のサイズを制限する必要がある場合が多いです。ウィンドウをあるサイズに固定するのではなく、範囲です。
最小サイズを制限するには、JFrameのset MinimSize()の方法があります。ただし、最大サイズを設定してsetMaximSizeを呼び出すことはできません。原因は不明です
だから私の考えは   モニターウィンドウのサイズ変更イベントは、最大サイズに達したらRobotクラスでマウスを操作します。
まず、サイズ変更イベントを傍受します。
this.addComponentListener()
操作は多くの変数を教えることにつながるので、匿名クラスを使うのには不向きです。
そこで、Size Lisenterを新規作成します。  クラスは、ComponentAdapterを継承し、putblic void componentResized(ComponentEvent e)を書き換えます。方法
まずメンバー変数を決定します。
private JFrame jFrame;//     ,            
	private int width;//    
	private int height;//    
そして一意の構造方法で値を付けます。
public SizeLisenter(JFrame jFrame, int width, int height) {
		super();
		this.jFrame = jFrame;
		this.width = width;
		this.height = height;
	}
最後に応答方法です。
/**
	 *           
	 */
	public void componentResized(ComponentEvent e) {
		Robot r = null;//        
		try {
			r = new Robot();
		} catch (AWTException e1) {
			e1.printStackTrace();
		}
		if (jFrame.getWidth() > width) {//    ,          ,        
			jFrame.setSize(width, jFrame.getHeight());
			if (r!=null) {
				r.mouseRelease(InputEvent.BUTTON1_MASK);//      
			}
		}
		if (jFrame.getHeight() > height) {
			jFrame.setSize(jFrame.getWidth(), height);
			if (r!=null) {
				r.mouseRelease(InputEvent.BUTTON1_MASK);
			}
		}

	}
最後にフォームにイベントを登録すればいいです。
使用時に肉眼で見える大きさの変化があります。