2017-11-13 15 views
0

Java Swing에서 게임을 개발 중입니다. 나는 그 자리에있는 모든 요소를 ​​설정하기 위해 절대 좌표와 고정 창 크기를 사용합니다. 하지만 JFrame의 크기를 조정하면 그려진 요소의 크기가 조정되지 않습니다. 어떻게하면 될까요? 예제에서는 기본 창 크기를 1280 x 720으로 설정하고이 크기에 따라 게임을 개발합니다. 그렇다면 자바가 요소의 크기를 자동으로 조정하게하는 것이 완벽 할 것입니다.Java Swing JFrame 및 JPanel의 크기를 모두 그려진 요소로 크기 조정

+1

"나는 절대 좌표를 사용합니다"-하지 마십시오. [Layout Manager] (https://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html) – c0der

+1

* "모든 요소를 ​​그 자리에 설정하려면 절대 좌표 및 고정 창 크기를 사용합니다. 하지만 JFrame의 크기를 조정하면 그려지는 요소가 확장되지 않습니다. * - 글쎄요, 그렇습니다. 레이아웃 관리자가 당신을 위해하는 일입니다.하지만, 바퀴를 재발 명하고 싶다면 수동으로해야합니다. 구성 요소 간의 관계 및 컨테이너 크기의 변화, 공간을 남겨 두는 방법 및 사용 가능한 공간이 구성 요소에 맞게 작을 때 수행 할 작업에 대한 반응에 대해 생각해보십시오. – MadProgrammer

+1

또는 이러한 문제의 대부분을 해결할 수있는 API를 사용할 수 있습니다. 픽셀 완벽한 레이아웃은 환상입니다. 다른 글꼴 메트릭스; DPI; 화면 해상도; 비디오 드라이버; 그들을 극복 할 시간. 대신 사용자 흐름과 상호 작용에 중점을 둡니다. – MadProgrammer

답변

-1

고정 된 크기의 창을 원하면 JFrame.setResizable (boolean) API를 사용하여 창의 크기를 조절할 수 없게 만들 수 있습니다. 예 :

public class FixedSizeJFrame 
{ 
    public static void main(String[] args) 
    { 
    JFrame frame = new JFrame("My Title"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setBounds(100, 100, 1280, 720); 
    frame.getContentPane().add(new JLabel("My Label"), BorderLayout.NORTH); 
    frame.getContentPane().add(new JTextArea("Sample text"), BorderLayout.CENTER); 
    frame.setResizable(false); 
    frame.setVisible(true); 
    } 
} 
+1

사용자로서 크기를 조정할 수없는 창을 얼마나 싫어하는지 지적하고 싶습니다. 코드는 글꼴 메트릭의 가능한 차이점도 고려하지 않습니다. DPI; 코드를 실행해야 할 수도있는 화면 해상도로 인해 사용자 수락 가능성 및 유용성이 더 낮아집니다. – MadProgrammer

+0

True. 하지만 setResizable()이 어떻게 사용되는지 보여 주기만했다. –