java - Swingbuilder - 应用程序位置居中

标签 java griffon swingbuilder

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

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

最佳答案

由于各种原因,您不能内联。这是居中的一种方法

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()
}

你不能在属性中设置它的原因是当属性被评估时,一个子节点还没有被创建或存储在任何地方。一种替代方法是将其设置为子内容 block 的一部分:

  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 是包含节点的元变量)。

关于java - Swingbuilder - 应用程序位置居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2714314/

相关文章:

java - 连接到 Amazon RDS Oracle 实例时如何处理 "Got minus one from a read call"错误

java - EJB 警告 : WELD-000411: . .. 考虑使用 @WithAnnotations 或具有边界的通用类型来限制事件

CSSBuilder 可以在没有 Griffon 的情况下使用吗?

Java SE框架和架构?

java - 是否可以使用 Java Lambda 来实现类似 Groovy 的 SwingBuilder 之类的东西?

java - 如何在 Swing 延迟几秒后处理帧?

java - 判断一个字符是大写、小写还是数字的程序

java - 当我打开 wifi 并连接时,TrafficStats.getMobileRxBytes() 和 TrafficStats.getMobileTxBytes() 始终返回 0

gradle - Griffon:运行 'gradle build' - 任务 ':jfxJar' 执行失败

data-binding - groovy swingbuilder 可绑定(bind)列表和表格