猫にもわかるSwingBuilder「frame」
このシリーズの一覧はこちら
はじめに
自分のSwing力の無さに愕然としたので、ちょこちょこサンプルを作ってはまとめてゆく。故にちょこちょこ記事は加筆修正されてゆく予定です。
まず何はともあれframeを作らないと始まらないですよね、ということでframeからスタート。
クラス階層
javax.swing Class JFrame java.lang.Object extended by java.awt.Component extended by java.awt.Container extended by java.awt.Window extended by java.awt.Frame extended by javax.swing.JFrame JFrame (Java Platform SE 6)
frmaeの実体は javax.swing.JFrame となります。
ドキュメント
属性一覧(よく使うもの抜粋)
id
id: 'mainFrame'
変数名を宣言。
size
size: [300, 300]
フレームのサイズをx, yで指定(px)。
location
location: [50, 50]
フレームの初期表示位置をx, yで指定(px)。画面左上からのピクセル(px)で指定。(デフォルトでは [0, 0] のようです)
locationByPlatform
locationByPlatform: true
location指定がない場合で、true に指定されているとプラットフォームに依存した初期表示位置になるようです。ちなみに、locationも指定し、locationByPlatformもtrueにすると、java.awt.IllegalComponentStateException: The window is showing on screen. というエラーが出るので注意。
(デフォルトでは false のようです)
show
show: true
非推奨のためvisibleを使いましょう。
visible
visible: true
フレームの表示非表示を指定。属性でtrueにしておくと、実行と同時に表示される感じになる。
resizable
resizable: true
フレームをリサイズできるかどうかを指定する。(デフォルトでは true のようです)
pack
pack: true
フレームのサブコンポーネントから推奨サイズを計算してぴったりぴっちりなサイズに設定する。フレームが非表示の際は設定されないらしい。(デフォルトでは false のようです)
サンプルソース
(動作確認: Groovy-Eclipse plugin Version: 2.5.1.xx-20110628-1600-e37)
frame1.groovy
import javax.swing.WindowConstants import groovy.swing.SwingBuilder class frame1 { static main(args) { new SwingBuilder().edt { frame(id : 'mainFrame', title : 'ふれーむ', size : [300, 100], location : [50, 50], visible : true, resizable : true, defaultCloseOperation: WindowConstants.EXIT_ON_CLOSE) } } }
解説
edtはEvent Dispatch Threadのことだと思う、多分。なんとなくサンプルでそう使っていたので今はまねしてそうしている。
更新履歴
2011-07-25
- packを追加。
2011-07-20
- id:kimukou_26さんのコメントより、location, locationByPlatform, resizable属性を追加。
- クラス階層を追加。はてブコメントにてid:backpaper0さんに教えてもらった内容*1の反映。
2011-07-19
- 新規作成。
*1:showはDeprected, visible推奨。