Java系のデザイン
[1] 主筆嬢 06/05/11 21:52
X-DesignerはJavaのレイアウト・マネージャによく似た、レイアウト用のウィジットを提供してる。
だから、今回はそれを使ってみる事にしてみる。
目次はこっち。
[2] 主筆嬢 06/05/11 21:54
今までは、TestPrj2というテスト用のプロジェクトを使って説明してきたけど、さすがにそろそろ汚くなってきたから、今回は新しく作り直す事にする。
[3] 主筆嬢 06/05/11 21:55
統一性のない奴だな、おまえは。
そういう事をすると分かりにくくなるだろうが。
[4] 主筆嬢 06/05/11 21:56
仕方ないじゃん。
今更もう遅い。
[5] 主筆嬢 06/05/11 21:59
そういう事で「X-Designerを使ってGUIアプリケーションを作る2」のページに従って、GUIを表示するTestPrj3というプログラムを作ってみた。
ソースコードはこれ。
[6] 主筆嬢 06/05/11 22:00
これが作ったTestPrj3

実行するとこういう風になる。

今はとりあえず、シェル・ウィジットの直下にボタン・ウィジットを配置してある。
[7] 主筆嬢 06/05/11 22:03
今回の興味の対象である、Javaのレイアウト・ウィジットというのは、X-Designerの画面の左下にある。

上の画面では、>>6の時にはあったボタンを削除してある。
[8] 主筆嬢 06/05/11 22:05
今回はとりあえずボーダーレイアウトを使ってみる。何となくこれが一番分かりやすそうだし。
で、そのボーダーレイアウトの直下にボタンを五つ配置してみる。

そうすると、こういう画面になる。

[9] 主筆嬢 06/05/11 22:07
ボーダーレイアウトというのは、ウィジットを東西南北と中央に配置するための奴であるはず。それなのに、追加したボタンは全部画面の上の方にたむろしてる。
これを期待通りの挙動にするには、ちょっと設定してあげる必要がある。
[10] 主筆嬢 06/05/11 22:10
ボタンの位置を変更するためには、各ボタンごと「コンストレイント」という奴を設定してあげればいい。
コンストレイントを設定するダイアログは、ボタン・ウィジットを選択してメニューの「ウィジット(W)」-「コンストレイント(O)...」を選択すると表示される。

これが、コンストレイントというのを設定する、「XdBorder constraints」という分かりにくい名前のダイアログ。

[11] 主筆嬢 06/05/11 22:12
>>10のダイアログで、各ボタンごと位置を指定してあげればいい。
とりあえずここでは、button1〜button5を東西南北中央に配置した。

[12] 広告 06/05/11 22:14
[13] 主筆嬢 06/05/11 22:17
ここでとりあえず、コンパイルしてみる。
ところが、失敗する。リンクでコケる。

[14] 主筆嬢 06/05/11 22:20
メッセージを見ると xdBorderWidgetClass というシンボルが見つからないから失敗しているというのが分かる。
端的に言えば、「libjavawidgets.a」というライブラリが不足しているのが原因。
だからそれを追加してあげればいい。
[15] 主筆嬢 06/05/11 22:22
まず、MakefileのBASICOPTに「-I/opt/SUNWspro/prod/src/java_widgets/h」を追加してあげる。
ヘッダファイルのインクルードでこけてる様子はないから、いらないのだろうけど、一応念のため。
[16] 主筆嬢 06/05/11 22:22
次に、"# リンクまたはアーカイブ"と書いてある行の下、$(LINK.cc)の行の最後に「/opt/SUNWspro/prod/src/java_widgets/lib/libjavawidgets.a」を追加してあげる。
そこまでやったMakefileがこれ(Makefile_2)
[17] 主筆嬢 06/05/11 22:24
そうすると、うまくいけばコンパイルが通る。
で、実行した画面がこれ。

[18] 主筆嬢 06/05/11 22:25
そーゆーことで、めでたしめでたし
[19] 主筆嬢 06/05/11 22:28
ちょっとまてよ、おい。
なんで「libjavawidgets.a」は$(LINK)の行の末尾に追加するんだ?
「X-Designerを使ってGUIアプリケーションを作る2」のページでは「libxdclass.a」は「TARGETDIR_TestPrj2」という変数に追加していたぞ。
その要領で行けば、「libjavawidgets.a」は「TARGETDIR_TestPrj3」に追加するのが妥当だと思うが、どうよ。
[20] 主筆嬢 06/05/11 22:30
それは聞いて欲しくなかった・・・
一応、できる限り調べてみたけど、結局原因は分からなかった・・・
とりあえず、リンカに指定する中間ファイルの順番が原因みたい。どうも「libjavawidgets.a」が「Sun-sparc-Solaris/TestPrj3Shell.o」よりも前にあると、リンクで失敗するらしい。
でも、それの原因は分かってない。
[21] 主筆嬢 06/05/11 22:32
いい加減な奴だな。おい。
[22] 主筆嬢 06/05/11 22:35
仕方ないじゃん。私が作ったんじゃないし。
[23] 名無しさん 06/05/11 22:38
前スレはこちら・・・
|