2012-02-24 4 views
0

JPanel은 JFrame 안에 있습니다 (그러나 크기가 같지 않고 JFrame이 전체 화면입니다). JPanel에는 작은 사각형 (JPanels)을 동적으로 추가하기 때문에 FlowLayout이 있습니다. JFrame의 크기를 조정할 때까지 그 정사각형이 잘 정렬되고 있습니다 (JPanel이 끝날 때 사라집니다). 그런 다음 그 정사각형이 한 행에 표시되고, 그 일부가 보이지 않게됩니다 (화면이 끝나면 사라집니다). 그리고 JPanel 크기를 조정합니다. JPanel의 영구적 인 크기를 유지하려면 어떻게해야합니까? JFrame의 LayoutManager는 MigLayout입니다.FlowLayout이있는 JPanel은 자체적으로 크기가 조절됩니다.

답변

2

가능한 한 가지 해결책 : getPreferredSize() 메서드를 재정 의하여 상수 Dimension을 반환합니다.

public class MyPanel extends JPanel { 
    private static final int PANEL_W = 400; 
    private static final int PANEL_H = 300; 

    public MyPanel() { 
     // ... etc... 
    } 


    @Override 
    public Dimension getPreferredSize() { 
     return new Dimension(PANEL_W, PANEL_H); 
    } 

    // ... etc... 
} 
+0

JPanel이 화면을 맞추기에 가능한 모든 위치를 차지하므로 화면의 너비와 높이를 미리 정의 할 수 없습니다. 보다 구체적으로, JFrame은 MigLayout에 따라 두 개의 열로 나뉩니다. 첫 번째는 영구적 인 크기이고 두 번째는 모든 공간을 남겨 두는 것입니다. – user1091733

+0

게다가,이 코드는 작동하지 않습니다. JPanel의 크기를 정의하더라도 JFrame에서 윈도우의 크기를 조정하거나 validate() 함수를 호출 할 때 변경됩니다. – user1091733

관련 문제