2012-03-17 6 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를
  • 또한 BorderLayout를 사용 BorderLayout.SOUTH 위치에서 주요 첨가되는 다른 인 JPanel를 사용한다.
  • SE 코너에 있어야하는 구성 요소가 위의 JPanel에 BorderLayout.EAST 위치에 추가됩니다.
  • 일반적으로 레이아웃 관리자를 사용하는 대신 구성 요소의 절대 위치를 설정하는 것이 좋습니다.
+0

예! JFrame을 설정하고 싶습니다. 오해해서 미안해! Pal을 사용해 줘서 고마워! – Isuru

+0

[BorderLayout.SOUTH'와'BorderLayout.EAST'를 참조 할 때, 각각 BorderLayout.PAGE_END'와'BorderLayout.LINE_START'을 사용해야 할 때, Jdk 1.4+에 대해 [BorderLayout Tutorials ] (http://docs.oracle.com/javase/tutorial/uiswing/layout/border.html) :-) –

관련 문제