2015-01-19 4 views
0

BorderLayout을 사용하는 내 JPanels에 성가신 문제가 있습니다.BorderLayout을 사용하여 JPanels와 잘못된 공백

this.setLayout(new BorderLayout(0, 0)); 
    JPanel panel = new JPanel(new BorderLayout(0, 0)); 
    panel.add(new Slot(), BorderLayout.SOUTH); 
    panel.add(new MapGUI(), BorderLayout.NORTH); 

    this.add(panel, BorderLayout.CENTER); 

이것은 내 인벤토리 JPanel의 생성자에 있습니다. Slot() 및 MapGUI()는 JPanel을 확장하는 클래스입니다. 게임이 실행되면 화면은 다음과 같이 보입니다. enter image description here

분명히 패널이 완전히 꺼져 있고 화면이 꺼져 있습니다. 이 문제를 어떻게 해결할 수 있습니까? 어떤 도움을 주셔서 감사합니다. 의 BorderLayout의 JavaDoc을에 따르면

+3

이것은 레이아웃마다 문제가 아니라 패널이 레이아웃을 제공하는 정보에 문제가 있다고 생각합니다. 즉, getPreferredSize를 덮어 쓰지 않고 적절한 정보를 반환하는 것처럼 보입니다. . 당연히 내가 틀릴 수도 있지만, 당신이 문제를 보여줄 수있는 예제 (https://stackoverflow.com/help/mcve)를 제공하지 않았기 때문에 우리가 할 수있는 일은 모두 추측입니다 – MadProgrammer

답변

1

은 :

구성 요소는 그러한 추천 사이즈 나 컨테이너 사이즈의 제약에 따라 배치됩니다. NORTH 및 SOUTH 구성 요소는 수평으로 뻗어있을 수 있습니다. EAST 및 WEST 구성 요소가 세로로 늘어날 수 있습니다. CENTER 구성 요소는 남아있는 공간을 채우기 위해 가로 및 세로로 늘어납니다.

원하는 크기를 설정 했습니까?

구성 요소를 세로로 맞추려면 BoxLayout을 사용해보십시오.

+0

고마워요! 선호하는 크기를 설정하지 않았습니다. this.setPreferredSize를 사용하여 문제를 해결했습니다 (새 Dimension (image.getWidth(), image.getHeight())); 각 JPanel 클래스에서 – Wookiederk

관련 문제