2011-07-27 7 views
2

내 기본 레이아웃에 GroupLayout을 사용하고 있으며 내부 패널을 추가 할 때까지 기본 정렬이 올바르게 작동합니다. 이러한 패널을 통해 기준선이 전달되지 않는 것 같습니다. GroupLayout으로 패널에 직접 추가 된 모든 버튼, 라벨 등은 기준선에 맞게 올바르게 정렬되지만 내부 패널 내부의 구성 요소는 그렇지 않습니다.GroupLayout 및 중첩 패널 기준선이 깨졌습니다.

놀랍게도 GroupPanel이 없기 때문에 나는 Andreas Flierl에서 하나를 사용하고 있습니다.하지만 중요한 스윙 클래스 문제와 조건을 설정하는 것이 중요하므로 중요하지 않습니다.

스크린 샷에서 내부 패널이 기준선이 아니라 하단과 정렬되는 방식에 유의하십시오. 이 문제는 하위 패널에 사용 된 레이아웃 관리자 (다른 그룹 레이아웃 일 수 있음)와는 별개입니다. 기본 피어의

screenshot

답변

0

것 같다, getBaseline은 무시해야합니다. 스칼라 스윙에서 그럴 필요가 없다는 것 또한 틀림 없다. (아마 자바 1.6에 의존하기 때문일까?)

val f = new Frame { 
    contents = new GroupPanel { 
    val but = new Button { text = "button" } 
    val lb = new Label { text = "label" } 
    val inner = new FlowPanel { 
     val b = new Button { text = "ibut" } 
     override lazy val peer: javax.swing.JPanel = 
     new javax.swing.JPanel(new java.awt.FlowLayout(1)) with SuperMixin { 
      override def getBaseline(w: Int, h: Int): Int = 
      b.peer.getBaseline(w, h) + getInsets().top 
     } 
     // vGap = 0 
     contents += b 
     contents += new Label { text = "ilab" } 
    } 
    theHorizontalLayout is Sequential(but, lb, inner) 
    theVerticalLayout is Parallel(Baseline)(but, lb, inner) 
    } 
    centerOnScreen() 
    pack() 
    open() 
}