簡単なフレーム
SimpleGUIApplication という抽象クラスが用意されており、SwingUtilities#invokeLater を勝手にやってくれます。以下は空のパネルがあるだけのフレームの例です。
import scala.swing._ object Main extends SimpleGUIApplication { val panel = new BorderPanel { preferredSize = (300, 200) } def top = new MainFrame { title = "Swing with scala" contents = panel } }
イベント処理
以下はボタンのクリックをカウントする簡単なアプリケーション例です。
import scala.swing._ import scala.swing.event._ import javax.swing.UIManager object Example101 extends SimpleGUIApplication { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()) def top = new MainFrame { title = "Swing with scala"; contents = new BorderPanel { import BorderPanel.Position._ add(label, Center) add(button, South) } } val button = new Button("Click") object label extends Label("Count:-") { var count = 0; listenTo(button) reactions += { case ButtonClicked(button) => count += 1 text = "Count:" + count } } }
label の定義中の listenTo にてbuttonのイベントをリスンするよう設定しています。
ボタンクリックの反応として、ButtonClicked というケースクラスにて処理を記述しています。