2012-03-17 40 views
6

画面にJFrameを配置する必要があります。しかし、私はそれらを画面の下部の右側に表示させることはできません。画面上の位置右下

私はそれらの配置方法を教えてください。あなたがそれを行う方法を説明することができれば、それは素晴らしいことでしょう。

ここまではコードです。

//Gets the screen size and positions the frame left bottom of the screen 
    GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); 
    GraphicsDevice defaultScreen = ge.getDefaultScreenDevice(); 
    Rectangle rect = defaultScreen.getDefaultConfiguration().getBounds(); 
    int x = (int)rect.getMinX(); 
    int y = (int)rect.getMaxY()- frame.getHeight(); 
    frame.setLocation(x ,y - 45); 
+0

プラットフォームによっては、[ここ](http://stackoverflow.com/a/2188981/230513)に記載されているように、これを制限するものがあります。 – trashgod

答えて

13

下記の例を試してください。注:pack() "Windowは、そのサブコンポーネントの優先サイズとレイアウトに合わせてサイズ変更されます。

import java.awt.Dimension; 
import java.awt.EventQueue; 
import java.awt.GraphicsDevice; 
import java.awt.GraphicsEnvironment; 
import java.awt.Rectangle; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 

/** @see http://stackoverflow.com/q/9753722/230513 */ 
public class LowerRightFrame { 

    private void display() { 
     JFrame f = new JFrame("LowerRightFrame"); 
     f.add(new JPanel() { 

      @Override // placeholder for actual content 
      public Dimension getPreferredSize() { 
       return new Dimension(320, 240); 
      } 

     }); 
     f.pack(); 
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); 
     GraphicsDevice defaultScreen = ge.getDefaultScreenDevice(); 
     Rectangle rect = defaultScreen.getDefaultConfiguration().getBounds(); 
     int x = (int) rect.getMaxX() - f.getWidth(); 
     int y = (int) rect.getMaxY() - f.getHeight(); 
     f.setLocation(x, y); 
     f.setVisible(true); 
    } 

    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 

      @Override 
      public void run() { 
       new LowerRightFrame().display(); 
      } 
     }); 
    } 
} 
3

私が知っている最も簡単な方法は、それぞれ独自のレイアウトマネージャを使用してJPanelsをネストすることです。

  • 主JPanelのはBorderLayout.SOUTH位置に主に添加される他のJPanelものBorderLayoutを使用するのBorderLayout
  • を使用します。
  • SEコーナーに移動する必要のあるコンポーネントは、上記のJPanelのBorderLayout.EAST位置に追加されます。
  • 一般的に、レイアウトマネージャを使用する方が、コンポーネントの絶対位置を設定する方が良いでしょう。
+0

ええ!私はJFrameを設定したい。誤解して申し訳ありません!しかし、Palを試してくれてありがとう! – Isuru

+0

[BorderLayout.SOUTH'と 'BorderLayout.EAST'を参照するためのアドバイスのポイントは、[BorderLayout.PAGE_END'と' BorderLayout.LINE_START'をそれぞれJdk 1.4+用に使用する必要があるときだけです。[BorderLayoutチュートリアル](http://docs.oracle.com/javase/tutorial/uiswing/layout/border.html):-) –

関連する問題