web-dev-qa-db-ja.com

Java swingでのウィンドウの最小サイズ制限の設定

JFrameがあります-JPanels in GridBagLayout ..

さて、ウィンドウを最小化すると、一定の制限の後、3番目のJPanelは消える傾向があります。 setMinimumSize(new Dimension(int、int))を使用してJFrameの最小サイズを設定しようとしましたが、成功しませんでした。ウィンドウは最小化できます。

ですから、実際には、一定の制限を超えるとウィンドウを最小化できないというしきい値を作りたいと思います。

どうすればできますか?

コード:-

import Java.awt.Dimension;

import javax.swing.JFrame;

public class JFrameExample {
    public static void main(String[] args) {
        JFrame frame = new JFrame("Hello World");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setMinimumSize(new Dimension(400, 400));
        frame.setVisible(true);
    }
}

また:

shadyabhi@shadyabhi-desktop:~/Java$ Java --showversion
Java version "1.5.0"
gij (GNU libgcj) version 4.4.1

Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Usage: gij [OPTION] ... CLASS [ARGS] ...
          to invoke CLASS.main, or
       gij -jar [OPTION] ... JARFILE [ARGS] ...
          to execute a jar file
Try `gij --help' for more information.
shadyabhi@shadyabhi-desktop:~/Java$

次のような出力が得られます

alt text

** UPDATE:** Netbeans IDEは期待される出力を提供します。)

26

documentation は、この動作がプラットフォームに依存していることを示しています。特に、次のサンプルコードはWindows Vistaで必要に応じて機能するためです。

import Java.awt.Dimension;

import javax.swing.JFrame;

public class JFrameExample {
    public static void main(String[] args) {
        JFrame frame = new JFrame("Hello World");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setMinimumSize(new Dimension(100, 100));
        frame.setVisible(true);
    }
}
34
ablaeul

実際には、どのプラットフォームでも最小サイズを確保する方法があります。 JFrameの最小サイズをそのコンテンツペインの最小サイズに設定し、ComponentAdapterを記述してcomponentResizedをオーバーライドする必要があります。次に、JFrameでgetSizeとgetMinimumサイズを使用し、幅または高さ、あるいはその両方を最小の幅または高さで置き換えます。 JFrameを拡張する場合:

this.addComponentListener(new ComponentAdapter(){
        public void componentResized(ComponentEvent e){
            Dimension d=YourJFrame.this.getSize();
            Dimension minD=YourJFrame.this.getMinimumSize();
            if(d.width<minD.width)
                d.width=minD.width;
            if(d.height<minD.height)
                d.height=minD.height;
            YourJFrame.this.setSize(d);
        }
    });
7
Bat0u89