2012-02-27 14 views
5

アプリケーションを起動するときにJFrameの最大サイズを設定したいとします。 問題は、画面の解像度が大きくなるとフレームが大きくなりますが、その時点で定義されている最大範囲を超えてはいけませんが、同じ場合は低解像度でうまく動作します。アプリケーションの起動中にJFrameの最大サイズを設定する

私は私のフレームは(500500)の最大のようにしたいので、私は、コードのこの作品を書いたように:でも私はバウンドを設定

JFrame frame = new JFrame("FRAME TRANSPARENT"); 
frame.setSize((int)(Toolkit.getDefaultToolkit().getScreenSize().getWidth()-50), (int)(Toolkit.getDefaultToolkit().getScreenSize().getHeight()-150)); 
frame.setMaximizedBounds(new Rectangle(0,0 , 500, 500)); 
frame.setVisible(true); 

、JFrameのはsetSizeメソッドを検討しているし、あると思われますsetMaximizedBoundsメソッドを無視していることを示します。 私はすでにsetMaximumizedメソッドで試しましたが、同じ出力を得ました。

+1

なぜ 'setMaximumSize'ではなく' setMaximizedBounds'ですか? – wchargin

答えて

6

すべてのこれらの年はそれを知ってもらうことができませんでした..私はそれを試してみましたが、あなたはsetMaximumSize()が動作しないようですね!私はあなたが

異なるように最小サイズと最大サイズの特定のクエリを持って見るが、主にサイズを制限するの私の要件は、setResizable(false)によって固定されているかのあなたのためのソリューションに従事:

public class MaxSizeUI 
{ 
    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       new MaxSizeUI().makeUI(); 
      } 
     }); 
    } 

    public void makeUI() { 
     final JFrame frame = new JFrame("Sample Fram") { 

      @Override 
      public void paint(Graphics g) { 
       Dimension d = getSize(); 
       Dimension m = getMaximumSize(); 
       boolean resize = d.width > m.width || d.height > m.height; 
       d.width = Math.min(m.width, d.width); 
       d.height = Math.min(m.height, d.height); 
       if (resize) { 
        Point p = getLocation(); 
        setVisible(false); 
        setSize(d); 
        setLocation(p); 
        setVisible(true); 
       } 
       super.paint(g); 
      } 
     }; 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setSize(300, 150); 
     frame.setMaximumSize(new Dimension(400, 200)); 
     frame.setMinimumSize(new Dimension(200, 100)); 
     frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 
    } 
} 
+0

これにより、フレームが最大幅または高さに達すると、画面上でフレームがちらつきます。場合によっては、それ自体を隠して再現する無限ループに入ります。 –

0

使用寸法
Dimension d=getMaximumSize(); Frame.setSize(d.width, d.height);

2

一つの可能​​な解決策は以下のとおりです。

Dimension DimMax = Toolkit.getDefaultToolkit().getScreenSize(); 
frame.setMaximumSize(DimMax); 

frame.setExtendedState(JFrame.MAXIMIZED_BOTH); 
関連する問題