【问题标题】:Baseline broken with GroupLayout and nested PanelsGroupLayout 和嵌套面板破坏了基线
【发布时间】:2011-10-14 12:55:45
【问题描述】:

我将GroupLayout 用于我的主要布局,并且基线对齐工作正常,直到我添加内部面板。基线似乎没有通过这些面板传播:虽然所有使用GroupLayout 直接添加到面板的按钮、标签等都相对于它们的基线正确对齐,但内部面板内的组件却没有。

由于 Scala Swing 出人意料地没有 GroupPanel,所以我使用的是来自 Andreas Flierl 的那个,但这不应该是重要的,因为我确信这是底层的 Swing 类以及如何调节的问题他们。

import swing._
import eu.flierl.grouppanel.GroupPanel

val f = new Frame {
  contents = new GroupPanel {
    val but = new Button { text = "button" }
    val lb  = new Label  { text = "label"  }
    val inner = new FlowPanel {
       contents += new Button { text = "ibut" }
       contents += new Label  { text = "ilab" }
    }
    theHorizontalLayout is Sequential        (but, lb, inner)
    theVerticalLayout   is Parallel(Baseline)(but, lb, inner)
  }
  centerOnScreen()
  pack()
  open()
}

请注意屏幕截图中的内部面板如何与底部对齐而不是基线对齐。此问题与用于子面板的布局管理器无关(可能是另一个组布局)。

【问题讨论】:

    标签: swing scala grouplayout baseline


    【解决方案1】:

    看来,基础对等点的getBaseline 必须被覆盖。太糟糕了,Scala Swing 中没有钩子(也许是因为它会使其依赖于 Java 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()
    }
    

    【讨论】:

      猜你喜欢
      • 2015-02-13
      • 1970-01-01
      • 2012-12-28
      • 2015-04-28
      • 2016-01-09
      • 1970-01-01
      • 1970-01-01
      • 2019-02-06
      • 2012-01-23
      相关资源
      最近更新 更多