Swingbuilder - 应用程序位置居中

时间:2010-04-26 14:38:26

标签: java griffon swingbuilder

我正在使用Griffon-> SwingBuilder创建一个应用程序。我希望能够将应用程序集中在桌面上。

我知道我们可以在应用程序创建时提供'location:[x,y]'参数。无论如何都要访问桌面属性来计算中心?

2 个答案:

答案 0 :(得分:3)

由于各种原因,您无法内联。这是一种集中的方式

import java.awt.*
import groovy.swing.*

sb = new SwingBuilder()
sb.build {
  f = frame(pack:true) {
      label "<html>" + (("This is a very long label."*3) + "<BR>")*5
  }
  Point cp = GraphicsEnvironment.localGraphicsEnvironment.centerPoint
  f.location = new Point((int)(cp.x - f.width), (int) (cp.y - f.height))
  f.show()
}

您无法在属性中设置它的原因是,在评估属性时,尚未在任何位置创建或存储子节点。一种替代方法是将其设置为子内容块的一部分:

  frame(show:true) 
  {
      label "<html>" + (("This is a very long label."*3) + "<BR>")*5
      current.pack()
      Point cp = GraphicsEnvironment.localGraphicsEnvironment.centerPoint
      current.location = new Point((int)(cp.x -current.width/2), (int)(cp.y - current.height/2))
  }

(current是包含节点的元变量)。

答案 1 :(得分:0)

其中一个Swing功能是,它会记住最后的位置和大小(如果可以调整大小)