2013-10-24 2 views
1

Sudoku 프로그램을 만들고 있는데 JFrame에 대한 My GridLayout의 간격을 변경하고 싶습니다. 현재 2 개의 JPanel이 있는데 하나는 상단과 하단에 있으며 간격은 정확히 절반입니다. 그러나 JPanel의 맨 위에 JFrame에 더 많은 공간이 있어야합니다. 내 코드는 다음과 같습니다Gridlayout의 간격 변경 Java

import java.awt.GridLayout; 

    import javax.swing.BoxLayout; 
    import javax.swing.JFrame; 


    public class GuiFrame1 extends JFrame { 
    private static final long serialVersionUID = 1L; 
    private static JFrame frame; 
    static GridLayout gLayout2 = new GridLayout(2,1); 
    private GuiPanel2 panel; 
    private GuiPanel1 panel2; 
    public GuiFrame1(){ 

    super("Sudoku"); 
    setSize(700, 700); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setLayout(gLayout2); 
    panel = new GuiPanel2(); 
    panel2 = new GuiPanel1(); 
    setVisible(true); 
    add(panel); 
    add(panel2); 


    } 
    public static void main(String[] args) { 
     new GuiFrame1(); 
    } 

    } 

당신이 배치 할 수있는 JPanel의 클래스가 필요합니다.

+0

'GridLayout'은 모든 구성 요소에 동일한 공간을줍니다. 다른 레이아웃 관리자 (예 :'BoxLayout')를 사용해야합니다. 사용자의 요구에 가장 적합한 레이아웃 관리자를 선택하려면 [레이아웃 관리자에 대한 시각 안내서] (http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html)를 살펴보십시오. – kiheru

답변

1

IIRC이 작업을 수행 할 수 없습니다. 레이아웃 유형을 서로 쌓아서 원하는 레이아웃을 얻을 수있는 보통 (항상?) 다른 레이아웃 유형 안에 배치하여이를 "에뮬레이션"해야합니다. 하지만 그리드 레이아웃 자체는 모든면에서 동등한 차원을 유지해야합니다.

또는 GridBagLayout이 유용 할 수 있지만이 기능을 사용하지 않고도 수행 할 수 있습니다.

내가 같은 문제에 직면했을 때 나는 국경과 격자 레이아웃의 일부 조합과 함께 해킹을 기억하고있다. 다른 레이아웃도 사용되었을 수있다.

+0

예, GridLayout의 그리드는 근본적으로 크기가 동일합니다. 크기가 다른 셀을 원할 경우 GridBagLayout을 사용하십시오. – Radiodef

+0

GridBagLayout에 대한 팁이 있습니까? – MrPerson