Griffon->SwingBuilderを使用してアプリケーションを作成しています。アプリケーションをデスクトップの中央に配置できるようにしたいと思います。
アプリケーションの作成時に提供できる「location:[x、y]」引数があることはわかっています。とにかくデスクトッププロパティにアクセスして中心を計算する方法はありますか?
Griffon->SwingBuilderを使用してアプリケーションを作成しています。アプリケーションをデスクトップの中央に配置できるようにしたいと思います。
アプリケーションの作成時に提供できる「location:[x、y]」引数があることはわかっています。とにかくデスクトッププロパティにアクセスして中心を計算する方法はありますか?
さまざまな理由で、インラインで実行することはできません。これが中央に配置する1つの方法です
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()
}
属性に設定できない理由は、属性が評価されたときに、子ノードがまだ作成または保存されていないためです。1つの代替方法は、子コンテンツブロックの一部として設定することです。
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は、包含ノードのメタ変数です)。
Swingの機能の1つは、最後の位置とサイズを記憶していることです(サイズ変更可能な場合)