문제

모두가 어떤 Java GUI 레이아웃 관리자를 사용합니까?최근에 나는 사용하고있다 MigLayout, 에는 강력한 구성 요소 컨트롤이 있습니다.다른 개발자들이 표준 JDK 외에 무엇을 사용하고 있는지 보고 싶었습니다.

도움이 되었습니까?

해결책

MiG레이아웃 Java 개발자가 널리 사용하는 GUI 레이아웃 관리자입니다.

다른 팁

GridBag레이아웃 사용할 수 있습니다.익숙해지면 정말 효과가 좋습니다.나는 표준 JDK 레이아웃 관리자가 그 자체로 매우 강력하다고 생각합니다.또한 타사 라이브러리에 대한 종속성을 최소화할 수 있습니다.

MiG와 FormLayout(JGoodies)은 둘 다 수동 레이아웃에 탁월합니다(거의 모든 레이아웃은 결국 수동이 됩니다).제가 드릴 수 있는 가장 큰 조언은 애플리케이션에 영향을 주지 않고 레이아웃을 완전히 뜯어내고 다시 구현할 수 있도록 뷰를 디자인하라는 것입니다(여기서는 뷰와 컨트롤러를 잘 분리하는 것이 핵심입니다).

'멍청한' 뷰를 구현하기 위한 JGoodie의 PresentationModel 접근 방식을 확실히 살펴보십시오.나는 빠른 프로토타입을 만들기 위해 GUI 빌더(저는 Jigloo GUI 빌더 플러그인과 함께 GroupLayout을 사용합니다)와 함께 이 기술을 사용합니다.3~4번의 반복 후에는 일반적으로 해당 작업이 사라지고 MiG 또는 FormLayout을 사용하여 다시 구현됩니다.

편집하다:이 글을 쓴 이후로 모든 레이아웃에 MiG를 사용하게 되었고 더 이상 GUI 빌더를 사용하지 않습니다. MiG를 사용하여 레이아웃을 작성하는 것은 너무 쉽습니다.

내가 마지막으로 작업한 Swing 애플리케이션은 다음과 같습니다. JGoodies의 양식 레이아웃.

나는 GridBag레이아웃.코드가 많이 필요한 것처럼 보이지만 매우 보기 좋은 레이아웃을 만듭니다.

나는 또한 결합하는 것을 좋아한다 테두리 레이아웃 뛰어난 사용자 정의 기능을 위해 GridBagLayout 패널을 사용합니다.

나는 사용하는 것을 좋아하는 팬이다. 테이블 레이아웃 GridBagLayout 대신.모든 것이 의미가 있지만 GridBagLayout을 사용하려고 할 때마다 내 영혼이 무너집니다.

나는 컨트롤을 위해 GridBagLayout을 사용했지만 java1.6 이후에는 그룹 레이아웃 정말 대단해요.

여기에 이를 사용하는 스크린샷과 샘플 코드가 있습니다!.

대체 텍스트 http://img145.imageshack.us/img145/7844/screenshot1dz8.png

    private void layoutComponents(){
        JPanel panel = new JPanel();

        GroupLayout layout = new GroupLayout(panel);
        panel.setLayout(layout);

        layout.setAutoCreateGaps(true);

        layout.setAutoCreateContainerGaps(true);
        SequentialGroup hGroup = layout.createSequentialGroup();

        JLabel nameLbl  = new JLabel("Name");
        JLabel countLbl = new JLabel("Amount");
        JLabel dateLbl  = new JLabel("Date(dd/MM/yy)");
        hGroup.addGroup(layout.createParallelGroup().
                addComponent(nameLbl).
                addComponent(countLbl).
                addComponent(dateLbl).
                addComponent(go));

        hGroup.addGroup(layout.createParallelGroup().
                addComponent(name).
                addComponent(count).
                addComponent(date));

        layout.setHorizontalGroup(hGroup);

        SequentialGroup vGroup = layout.createSequentialGroup();

        vGroup.addGroup(layout.createParallelGroup(Alignment.BASELINE).
                addComponent(nameLbl).addComponent(name));
        vGroup.addGroup(layout.createParallelGroup(Alignment.BASELINE).
                addComponent(countLbl).addComponent(count));
        vGroup.addGroup(layout.createParallelGroup(Alignment.BASELINE).
                addComponent(dateLbl).addComponent(date));
        vGroup.addGroup(layout.createParallelGroup(Alignment.BASELINE).
                addComponent(go));
        layout.setVerticalGroup(vGroup);

        frame.add( panel , BorderLayout.NORTH );
        frame.add( new JScrollPane( textArea ) );
    }

나는 사용한다 디자인그리드레이아웃 내 패널의 대부분에 대해.

희귀한 패널의 경우 DesignGridLayout 완전히 처리할 수 없어서 Borderlayout과 DesignGridLayout.

DesigngridLayout을 사용하면 입력하고 읽기 쉬운 최소한의 코드 줄로 레이아웃을 수동으로 코딩할 수 있습니다.

DesignGridLayouut layout = new DesignGridLayout(myPanel);
layout.row().grid(lblFirstName).add(txfFirstName).grid(lblSurName).add(txfSurName);
layout.row().grid(lblAddress).add(txfAddress);
layout.row().center().add(btnOK, btnCancel);

패널 그리드의 각 행은 한 줄의 코드로 정의됩니다.보시다시피 패널을 "그리는" 작업은 매우 간단합니다.

게다가 내가 찾아보니 DesignGridLayout 몇 가지 고유한 기능(예: '스마트 수직 크기 조정").

GridBagLayout은 강력하지만 매우 원시적입니다.레이아웃을 연결하는 코드는 매우 장황합니다.이 유틸리티 라이브러리(실제로 약 10개의 클래스가 포함된 1개의 jar 파일)는 많은 작업을 단순화합니다. http://code.google.com/p/painless-gridbag/ 다음 스니펫은 해당 사이트의 홈 페이지에서 인용되었습니다.

    PainlessGridBag gbl = new PainlessGridBag(getContentPane(), false);

    gbl.row().cell(lblFirstName).cell(txtFirstName).fillX()
             .cell(lblFamilyName).cell(txtFamilyName).fillX();
    gbl.row().cell(lblAddress).cellXRemainder(txtAddress).fillX();

    gbl.doneAndPushEverythingToTop();

일반적인 개요로서, 제가 아주 오래 전에 sun에 쓴 기사가 유용할 것입니다.최신 레이아웃 관리자와 최신 버전은 아니지만 하나의 레이아웃으로 모든 작업을 수행하기보다는 레이아웃 관리자의 효과적인 중첩에 중점을 둡니다.

보다 http://developer.java.sun.com/developer/onlineTraining/GUI/AWTLayoutMgr

나는 중요하지 않은 GUI의 경우 기본 패널에 다음이 있을 수 있는 하위 패널이 중첩된 여러 레이아웃을 사용한다는 것을 발견했습니다. GridBagLayout 각 하위 패널(일반적으로 테두리나 패널임을 나타내는 표시 없음)은 가능한 경우 더 간단한 레이아웃을 사용합니다.일반적으로 나는 BorderLayout, FlowLayout, 그리고 BoxLayout 더 작고 단순한 하위 패널의 경우.GUI의 작은 섹션을 하위 패널로 나누고 가장 간단한 레이아웃을 사용하여 GUI의 해당 섹션을 제어함으로써 너무 복잡하지 않고 잘 배열된 디스플레이를 만들 수 있습니다. GridBagLayout옵션이 많습니다.또한 디스플레이 기능과 같은 기능을 패널로 그룹화하여 더 읽기 쉬운 코드를 생성합니다.

스프링 레이아웃 이는 netbeans의 일부인 mantissa gui 빌더를 위해 개발되었습니다.

나는 사용했다 그룹 레이아웃 또한.다시 말하지만, 이는 Java6의 표준 JDK 레이아웃 관리자이지만 라이브러리도 별도로 찾을 수 있습니다.

저는 항상 GridBagLayout의 열렬한 팬이었습니다.이는 HTML 테이블과 많이 유사하므로 웹 프로그래머에게 직관적입니다.

다양한 중첩 레이아웃을 사용하기 시작한 다음 GridBagLayout으로 옮겼습니다(이는 상당히 실망스럽습니다).그 이후로 저는 FormLayout을 사용해 보았지만 (양식 외에는 적합하지 않다는 것을 알았습니다) TableLayout에 확고히 자리를 잡았습니다. 전반적으로 매우 만족합니다.

그 이후로 나는 MiGLayout을 발견했고, 그것을 가지고 노는 것 외에는 많은 일을 하지 않았지만 그것은 매우 유능하고 TableLayout과 매우 유사하며 아마도 조금 더 깔끔해 보입니다.

나에게 가장 큰 장점은 MiGLayout이 JDK의 일부가 되도록 설정되어 있으므로 그렇게 되면 거의 독점적으로 사용할 생각입니다.

기억해야 할 또 다른 점은 어떤 무거운 LayoutManager를 선택하든 항상 GridLayout과 같은 간단한 레이아웃 관리자를 위한 장소가 있다는 것입니다.나는 더 간단한 레이아웃 관리자를 사용하면 훨씬 더 쉽게 수행할 수 있었던 몇 가지 끔찍한 일을 GridBagLayout으로 수행하는 것을 보았습니다.

저는 타사 라이브러리에 대한 종속성을 최소화하는 것을 선호하므로 일반적으로 대화 상자에는 BoxLayout을 사용하고 "복잡한" 레이아웃에는 GridBagLayout을 사용합니다.GridBagLayout은 이해하기 쉽지만 구성하기가 약간 어렵습니다.나는 HTML 레이아웃에서 코드를 생성하기 위한 도구를 직접 작성했습니다(다른 사람들에게도 도움이 되기를 바랍니다).http://www.onyxbits.de/content/blog/patrick/java-gui-building-gridbaglayout-manager-made-easy

내가 찾은 유일한 레이아웃 관리자는 실제로 좋다상대 레이아웃 관리자.상대 레이아웃 관리자는 대화 상자가 표시되는 방식과 일관된 방식으로 작동합니다. 개념적으로 조직.한 가지 단점은 이 레이아웃 관리자가 추가 제약 조건을 처리한다는 것입니다.그렇습니다 ~ 아니다 비율 제약을 다루는 것 같습니다.다행히 디자인이 꽤 잘 되어 있어서 이 기능을 구현할 수 있었습니다.

나는 사용한다 테두리 레이아웃 중첩하는 동안 90%의 시간 상자 레이아웃 그리고 스프링레이아웃

저는 약간의 Java 초보자입니다.

GridBagLayout을 시도했다가 포기하고 BoxLayout을 시도했다가 포기하고 직접 만들었습니다. 맞춤 레이아웃 작동했습니다.GridBag와 Box를 사용하여 최선의 추측을 넣었고 레이아웃 엔진은 디버깅할 뚜렷한 방법 없이 다른 작업을 수행하기로 결정했습니다.

내 사용자 정의 레이아웃을 사용하면 좌표와 너비, 높이를 인쇄하여 어디에서 잘못되었는지 확인할 수 있었습니다.약간 수학적인 배치이지만 내장 레이아웃 관리자 중 하나의 제한된 어휘보다는 사용할 수 있는 Java의 모든 기능을 갖췄습니다.

물론 이것은 단지 홈 프로젝트를 위한 것이었고 직장에서는 절대 이런 작업을 수행할 수 없습니다.

레이아웃과 같은 형식에는 GridBagLayout을 사용하고, 간단한 레이아웃에는 BorderLayout을 사용하고, 사이에 약간의 공백이 있는 가로 아이콘/버튼 수에는 FlowLayout을 사용합니다.Netbeans는 또한 시간을 절약하기 위해 많은 지루한 레이아웃 코딩을 피할 수 있는 훌륭한 GUI 빌더입니다.

저는 최근에 Swing을 사용하기 시작했고 GridBagLayout을 사용하고 있습니다.

나는 많은 설정이 필요하고 읽기 쉽지 않거나 수동으로 수행하기 힘든 모든 레이아웃 관리자가 지겨워서 각 구성 요소를 제자리에 유지하는 두 개의 포토 코너의 추상화를 사용하는 나만의 매우 간단한 레이아웃 관리자를 작성했습니다.다음과 같이 구성 요소를 추가할 수 있습니다. parent.add(child,"topleft(0, 0.5)bottomright(0.5,1.0)");

여기를 보세요 https://github.com/hageldave/UsefulStuff/blob/master/src/PhotoCornersLayout.java ;) 당신은 올바른 레이아웃에 대해 스스로 반응하지 않으므로, 오버랩 또는 다른 바로 가계를 점검하지 않기 때문입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top