2010年6月28日月曜日

Swing 文字列を傾けて描画

参考ページはここ
要は、Font自体にAffinTransformをかけてから描画すること。

2010年6月25日金曜日

Java:ui:役立ちリンク集

Java Swing Tips てんぷらメモ : Java6を標準とた1画面JWS完備のサンプル集
プログラマメモ2 :開発やIT系のメモ集、Swingのもあり
Java examples (example source code) Organized by topic :多岐にわたるサンプル集
Java Category. - java.itargs.org :Q&A集や資料類
Javaの学習ならJavaDrive :学習資料とサンプル
Swing-Threadの解説 :Sunの解説
SMG-Java トルぶるシューティング(Javaのトラブルシューティングはこちら)
Easy Learn ava: Programming Articles, Excmples and Tips :学習教材とサンプル

2010年6月22日火曜日

javax.swing Component preferredSize の罠

Swingでの部品のサイズは、sizeでも、maximumSizeでも、minimumSizeでもなく、preferredSizeが使われるため、ここを設定することが多いのだが、サイズが可変になる場合にはむしろ「null」にしておいた方が吉である。

そもそも、Swingでは、サイズはLayoutManagerの管理下にあり、上記のサイズ指定は参考値という扱いのようだ。とはいっても最大の参考値は「preferredSize」であり、初期表示はこの値が使用される。

■状況:
JPanelにBorderLayoutを設定し、NorthにJToolBarを配置、Centerにはイベントに応じて異なるJPanelが挿入され、サイズも動的に変化するという画面を開発していた。始めはJDialogを継承したクラスでうまく動作したものをJPanelに変更し、別に作成したJFrameに埋め込んで使用する形に変更したら、内部の部品変更でサイズが変わらなくなってしまった。

■調査:
最初は、pack()やvalidate(),invalidate()などの呼び方や対象が間違っているのではと、何種類もコードを追加、削除をしてみたが一向に変化がなかった。ネットや資料を見ているうちに、そういえばサイズは「preferredSize」を見ていて、これが固定値だと、、、ということでnullにしてみたらという考えに思い至った。

■判明:
nullに指定すると、見事にサイズが内部部品に応じて変化するようになった。もともとJDialogで試していた時にはgetContentPane()で取得できるContainerのpreferredSizeにはnullが入っていたいようで、内部に応じて変化する場合にはこの指定が正しいようだ。

■教訓:
前提を疑え

2010年6月10日木曜日

Mavenからアプリを実行する

以下のように記述し、exec:exec とする。

<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.1.1</version>
<executions>
<execution>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<executable>java</executable>
<arguments>
<argument>-classpath</argument>
<!-- automatically creates the classpath using all project dependencies,
also adding the project build directory -->
<classpath/>
<argument>net.korabo.lib.h2ctrl.App</argument>
</arguments>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>

MavenのThreadで動作するJavaアプリの場合は、以下のように記述し、exec:java

<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.1.1</version>
<executions>
<execution>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>net.korabo.lib.h2ctrl.App</mainClass>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>

WaveMakerで3rdPartyのjarを使用する

h2databaseが使用したくて調べたら、以下のようにものを発見した。

WaveMakerでParadoxを使用する

ふむふむ、まずシステムとして認識させるには、
$WAVE_MAKER_DIR/studio/WEB-INF/lib/

にjarファイルを配置し、作成したプロジェクトで使用するには、
$PORJECT_DIR/xxProject/lib/

に配置すればいいようだ。プロジェクト側の「WEB-INF/lib」はクリーンされると消去されるので、使用できない。

なお、使用するHibernateの方言は、
org.hibernate.dialect.H2Dialect

となる。

2010年5月26日水曜日

ps コマンドでの角括弧付きプロセス名

linux(ubuntu) で、psすると、[]に入ったプロセスがある。


$ ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 20:32 ? 00:00:00 /sbin/init
root 2 0 0 20:32 ? 00:00:00 [kthreadd]
root 3 2 0 20:32 ? 00:00:00 [migration/0]

これは、特権モードで動いているプロセスのことだそうな。

psコマンドでの[]付き表示について

2010年5月22日土曜日

古いマシンでのAndroid-X86

VIAの古くて組み込み向けのマザボ(EpiaM)でX86を起動しようとして格闘した記録。

LiveCDでの起動=>画面出ない
VGAモードを選ぶか、
 grub で、e => e としてkernelパラメータを編集
「vga=788」を追加

InstallでHDD認識しない
 最初は、IDE_BLKDEV_VIA8xxx を追加すればと思ってやったが、
 これだと、/dev/hda と認識させられるが、grubのインストールでこける
 「setup (hd0)(hd0,-1)」 ?????
 そのまま再起動すると、「Detecting Andoird-x86 .......」となって一向に進まない。

*色々調べると、新しいKernel(2.6.x)では、HDDは/dev/sd に統合されている様子。
そこで、別のオプション「CONFIG_PATA_VIA=y」を有効にしてビルドしなおすと、
/dev/sdaとして認識してくれ、 grubエラーもでなくなった。

タッチパッドの設定は以下のようにすればよさそう。
1)Debugモードで起動(正常時と同じ「vga=788」を指定)
2)/data が mount されるステージまで進む
3)mkdir /data/system/tslib
4)ts_configure
5)順番に5つの点をタッチ(上左、上右、下右、下左、中央)
6)ls -l /data/system/tslib/pointercal
7)再起動(reboot -f)