ARGENTO CUORE

 May the code be with you.

--.--.--[--] スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

2010.06.10[木] Synthを触る

Javaのルックアンドフィールは、xmlでテーマを記述することで、デザイナでも簡単にテーマを作成できる。
らしいので、Scalaから触ってみた(もう二度とJavaを触ることはないかもしれない……)。

javax.swing.UIManager
javax.swing.plaf.synth.SynthLookAndFeel

上記2つのパッケージをインポートした上で、
val synth = new SynthLookAndFeel()
synth.load(AppClass.getClass().getResourceAsStream("theme.xml"), AppClass.getClass())
UIManager.setLookAndFeel(synth)

とすることで、テーマを適用できる。テーマはxmlファイルで記述するので、getResourceAsStream(xmlファイル名)でロードする。
theme.xmlは以下のように書く。
<synth>
<style id="default">
<font name="Sans-serif" size="20" />
<state>
<color value="#FFFFFF" type="FOREGROUND" />
<imagePainter method="buttonBackground" path="hoge.png"
sourceInsets="10 10 10 10" />
</state>
</style>
<style id="internal_frame">
<opaque value="true" />
<imageIcon id="InternalFrameIcon" path="icon.png" />
<property key="InternalFrame.icon" type="idref" value="InternalFrameIcon" />

<state>
<color value="#FF00FF" type="BACKGROUND" />
</state>
<imagePainter method="internalFrameBorder" path="waku.png"
sourceInsets="5 5 5 5" paintCenter="true" />
<insets top="0" left="0" bottom="12" right="0" />
</style>
<style id="internal_frame_title">
<insets top="0" left="16" bottom="3" right="0" />
<property key="InternalFrameTitlePane.titleSpacing" type="integer" value="7" />
<property key="InternalFrameTitlePane.buttonSpacing" type="integer" value="0" />
<font name="梅ゴシック" size="10" />
<state>
<color value="#FF00FF" type="BACKGROUND" />
</state>

<imageIcon id="InternalFrameCloseButtonIcon" path="close_button.png" />
<property key="InternalFrameTitlePane.closeIcon" type="idref" value="InternalFrameCloseButtonIcon" />
<imageIcon id="InternalFrameMaximizeButtonIcon" path="maximize_button.png" />
<property key="InternalFrameTitlePane.maximizeIcon" type="idref" value="InternalFrameMaximizeButtonIcon" />
<imageIcon id="InternalFrameMinimizeButtonIcon" path="minimize_button.png" />
<property key="InternalFrameTitlePane.minimizeIcon" type="idref" value="InternalFrameMinimizeButtonIcon" />
<imageIcon id="InternalFrameIconifyButtonIcon" path="iconify_button.png" />
<property key="InternalFrameTitlePane.iconifyIcon" type="idref" value="InternalFrameIconifyButtonIcon" />
</style>
<style id="InternalFrameMaximizeButtonStyle">
<insets top="0" left="0" right="0" bottom="0" />
</style>
<bind style="default" type="region" key="Button" />
<bind style="internal_frame" type="region" key="InternalFrame" />
<bind style="internal_frame_title" type="region" key="InternalFrameTitlePane" />
<bidd style="InternalFrameMaximizeButtonStyle" type="name" key="InternalframeTitlePane.maximizeButton" />
</synth>


ウインドウフレームのデザインを変えてみたかったので、JInternalFrameに対してのテーマを作成してみた。本当は他にも色々設定しないといけない項目があるけど(例えばボタンデザインであれば、オーバーしたとき、クリックしたときetc...)、それはちょっとずついじってみようと思う。

参考
■sun、synthのページ
http://java.sun.com/docs/books/tutorial/uiswing/lookandfeel/synth.html

■コンポーネントプロパティ
http://java.sun.com/javase/7/docs/api/javax/swing/plaf/synth/doc-files/componentProperties.html

■リージョン
http://java.sun.com/javase/ja/6/docs/ja/api/javax/swing/plaf/synth/Region.html

■IBMのSynthページ
http://www.ibm.com/developerworks/jp/java/library/j-synth/

■EaSynth内のSynthについて取り扱ったページ
http://www.easynth.com/articles/005.htm

■Sophieプロジェクト内のWiki
http://sophie2.org/trac/wiki/AUTHOR_APP_TUNING
スポンサーサイト

Comment






(編集・削除用)


管理者にだけ表示を許可

Trackback

http://ronor.blog81.fc2.com/tb.php/115-3b0e9262

この記事にトラックバック(FC2Blog User)

Scala Feed

scala feed

FC2カウンター

プロフィール

RoNor

Author:RoNor
得意呪文はScalaですって言えるようになるのが夢です。
デスマーチ中、パーティメンバーの防御力を向上させたりさせなかったり。

検索フォーム

QRコード

QRコード

Copyright © 2009-2010 ARGENTO CUORE and RoNor All rights reserved.

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。