Appletで使う *.jarファイル -- 2002.9.24
Javaで ある問題が起きていて, でもソレを放って置いたのらった。 その問題っつーのは ・・・ Appletが動かない。 ジツはあるときを境に動かなくなっちったのら。(T-T)
で, フト再挑戦してみたくなって よくよく調べてみるっちゅーと, こんなメッセージが出ていただよ。
java.security.AccessControlException: access denied (java.io.FilePermission ホニャララ\RexxIO.class read)
そう, コレは NetRexxで作った Applet。でもなんで? 環境変数CLASSPATH で指定しているブツがあるから, 使えないハズないのに。
それにセキュリティーがどーとかって, σ(^^) が「よい」つってんだから動いてよいんだよー。 (←そんなんじゃないっつーの)
securityのソレはよく分からないので CLASSPATHを使わない方法, つまり \java131\jre\lib\ext\
のディレクトリに, 今回使う NetRexxR.jar をコピーしてみたにょ。 結果は ・・・ ばっちぐー!
Java2で Appletをアレするばーい, 必要な *.jarファイルはそーゆーディレクトリにないとダメっぽいのら。
てことで, 同じよーに「Appletから htmlにあるECMAScript(JavaScript)を動かしてみるゾ」Appletを, 動かそーと試みてみるにょ。
コレのばーいは jaws.jar
っつーのを使うんだけど, コレも同じよーにアレしてみるとまったく問題なし。
ウッキー。たったコレだけのことで動かないなんてどーゆーこっちゃー。 (← って, 単なる勉強不足じゃん)
◇
そーいや, Appletが動かないのは proxy経由ってばーいもだよね。Java console見てみると, proxy情報のとこ "auto" になってんだけど ・・・ コレってどーすればよいのけ? こっちの問題, まだ時間かかりそーな気配にょ。(T-T)
今度は Tomcat 3 -- 2002.8.27, 2002.8.28
さて今度は Tomcat 3だお。 なぜ前回よりバージョンが下がってるかっつーと, Tomcat 4じゃ起動もしてくんないからなのら。あははのは。
んじゃ Tomcat 3なら動くのけ? ・・・ ところがどっこい, そーは問屋がおろさないのら。
なんと Exceptionが大量に発生して, それを停止させよーもんならロックしちゃうのら。 (← ってダメじゃん)
ま, 運がよかったらいくつかのページ表示できるんだども, なにがアレなのか, 突然異常停止したりする訳だからちっともアレにょ。 それとも, σ(^^) の環境だけの問題なのかな?
とかゆーことで, ソレの起動スクリプト公開 あるよ。 使ってみよーってばーいは, リセットすることも考えられるから, 操作中の何かがあったりするばーい, データを保存しといた方がよいかも。あはは。 (←笑ってるばーいじゃない)
使い方は前回と同じく, Tomcat 3.3.1 のバイナリ getして 展開, んで, そこの binディレクトリにコレ加えるとよいもん。 あとは, 環境変数 JAVA_HOMEと, あと ・・・ 何だっけ? 忘れちった。あっはっはー。
◇
他に必要な環境変数 ・・・ ソレは TOMCAT_HOMEだったあるよ。
てことで, こんな感じ(↓)にセットする訳にょ。んで, そのあとは startupを動かすだけ。
- set JAVA_HOME=C:\Java131\jre
- set TOMCAT_HOME=C:\usr\local\jakarta-tomcat-3.3.1
んで, ロックするとゆーのはどーゆーことなのかっつーと, ジツは Tomcat(サーバー)と mozilla(クライアント)を同時に動かしてページを表示させるとダメっぽいってことなのら。
そう, つまり別のマシンから Tomcatにアクセスすればオッケーて訳にょ。なーんだ, そーだったのけ。えへへ。(^o^)
いやー, ちっとも気付かなかっただよ。
てことで, 別のマシンから http://xxx.xxx.xxx.xxx:8080/
て感じでアクセスすると, たぶん表示されるはずだお。 (←たぶんって何だ)
ひととおり使うことできたら, あとは終了方法なんだけど, でも, 起動スクリプトのその部分, まだ作り込んでないにょ。テヘッ。 (←ぉぃ)
そんな訳で, Tomcatサーバー窓は手作業で終了してけろ。(^^)
ってアレ? 終了できるときもあるよね。なにか違いあんのかな。
◇
さて, ソレだけでは何なので, 「ありさん」の紹介でもしよっかな。
コレは何かっつーと, makeコマンドみたいなブツ。
makeコマンドのばーい, ファイルの依存関係を Makefile で指定すんだけど, OSが違ったり Cコンパイラーが異なったりすると, 微妙にコレも違ってきたりする ちょっとやっかいなブツなのら。
コレが Ant だと,
なんせ Javaで XMLだから大丈夫って訳なのさっ ・・ て, あんまし説明になってないね。エヘ。
てことで, Ant のバイナリ。 そして, Ant 1.5 の起動スクリプトにょ。
まだまともに動かしたことないけど, たぶん動くはずだお。 (←ぉぃ)
Tomcat 4 にチャレンジ -- 2002.8.18
Tomcat つっても戦闘機ではない。 ましてやトム猫でもない。 って, アレ? コレってどーゆー意味? ・・・ そう, コレは「オス猫」って意味らしいのら。なんでだろ。あはは。
でも, 戦闘機にも付けられている名前てことで, だからこそ, ホントは よい意味じゃないのかも。(^^;
さて, 何も「オス猫」について語り合おーとか そんなんじゃなくて, ここで扱うのは Jakarta Project の Tomcat だお。
そう人面猫のよーなキャラクターが特徴のアレのことにょ。
和訳もあるから英語が苦手っぽいばーいは Ja-Jakarta Project 見てちょ。
この Tomcat, ユーザーズガイドによると「JSP環境を持ったServletコンテナ」てことで, ま, 使い方によってはありがたいのかも知れないにょ。
でも, コレを起動しよーにも環境変数の指定がソレなりに大変なのら。
いくつかの platformじゃスクリプトが用意されてるんだけっちょ, OS/2のソレはないもん。
こんなことが許されてよいのだろーか, がるるるる。
てなことで, 起動スクリプトの公開だお。
・・・ の前に, Tomcat 4.0.4 のバイナリ を取ってきて 展開。 この起動スクリプトは, その binディレクトリに 展開するよーになってるにょ。
分かりにくかったら 掲示板 使ってけろ。
起動スクリプトは UNIX版のソレに合わせてあるので, JAVA_HOME みたいな環境変数だけ指定しておいて, あとは startup.cmd 動かすだけ。
・・・ のつもりだったけど, これがまた 動かないんだな。あははのは。 (←ぉぃ)
ま, 暫定版(テスト版?)ってことで とりあえず公開にょ。えへへ。
書くの忘れてたけど, 前提条件は Java 2 SDK(JDK) 1.3以上ってことらしいもん。うじゃ。(^o^)/
Java 1.1.8 Applications -- 2002.2.26, 2002.3.25, 2003.2.5
前回 ので, クラス名が分からなくてもソレを知ることができるかも
・・・ なーんてことだったんだけど, ま, 分かる範囲でソレをここに書いておくのもよいかも知んない。
つーことで, Java 1.1.8で動くApplicationとか, Java2を前提としているけど動いちゃうブツ, そーゆーのをアレしてく予定にょ。ぐふふ。
◇
j2ch-cache (Monazilla Product)
コレはまさに Java2用っつーことだけど, でもJava 1.1.8でも動いてしまうとゆーソレ。
だけど そのうち Java2でしか動かなくなるかも知んないので注意しなきゃ だよ。
投稿か何かの認証部分以外は, Java 1.1.xで動くよーにできてるらしー。
んで, σ(^^) のばーい, 使うときには batch fileを動かしているだけ。 キャッシュサーバーを動かす batch fileと, コレを network updateする batch fileなのら。
- j2ch.cmd:サーバー起動用 (折り返してたとしても実際は1行)
jre -norestart -cp ../lib/j2ch.jar j2ch.cache.J2chServer ../cache ../adm 127.0.0.1 7524
(proxyを使う場合)
jre -norestart -Dhttp.proxyHost=xxx.xxx.xxx.xxx -Dhttp.proxyPort=8080 -Dhttp.proxySet=true -cp ../lib/j2ch.jar j2ch.cache.J2chServer ../cache ../adm 127.0.0.1 7524 - update.cmd:network update用 (折り返してたとしても実際は1行)
jre -cp ../lib/update.jar j2ch.cache.update.J2chUpdater ../lib
j2ch.cmdに指定しているオプション -norestart てゆーのは, こんな, コマンドラインで動く Javaアプリの起動が微妙に早くなるおまじない。 情報ありがと。 > JJさん
てことで, いまのとこ version 0.41なんだけど, しっかりと動いてるっぽいもん。 ・・ つーか, 更新してもう 0.57cになってんだけどね。
Polarbar Mailer
マルチ Account対応で, Preview mailで受信する前に加工できたり, Virtual Folder使って検索・絞り込みも思いのままで, Mail filterをアレして ・・・ って, この機能使ったことないや。あははのは。
そんな高機能メーラーなんだけど, Helpも英語だし 使いにくいかも なんてことだったらアレなので, 起動方法をアレしてみよー。
単純に動かすには jre -cp /usr/local/polarbar/pbm121b.zip org.polarbar.mailer て感じ。 pbm121b.zipのとこの指定は, 実際にソレを保存しているとこのパス名だお。
んで, コレに polarbarのメールフォルダーのパス指定と, それから, 起動を高速化したのがこの batch fileにょ。
- polarbar.cmd:起動用batch file (折り返してたとしても実際は1行)
jrepm -cp /usr/local/polarbar/pbm121b.zip org.polarbar.mailer -d /home/polarbar/Mailer
こーゆー色で示してる部分は, 環境によって違ってくる部分だお。書替えといてちょ。
jrepm っつーのは, PMで動く Javaアプリの起動が 微妙に早くなるコマンド。
動かしてみると分かるけど, 普通の PMプログラムのよーに, 起動したコマンド窓が見えなくなるだよ。
情報ありがと。 > JJさん
さー, みんなも Mail filterとか使いこなして polarbar マスターになろー。 (←なってどーする)
Rhino, Rhino (英語)
な〜にが掟破りかっつーと, Rexx使いを名乗っておきながら別のスクリプト言語を紹介するってとこだね。
「そんなんでいいのかね」
「だって たまごなんだもーん」
「だもーんじゃないでしょ, だもーんじゃ」
そんなやり取りがあったかどーかはアレとして, とりあえず起動してみるにょ。
まずは js.jar
を CLASSPATHに追加しておいて
- インタプリター
- java -nojit org.mozilla.javascript.tools.shell.Main XXXXX.js
- コンパイラー
- java org.mozilla.javascript.tools.jsc.Main XXXXX.js
そうなのら。実はコンパイラーも入っていて, Javaの .classファイルに変換できたりするのら。
で, -nojit
は JIT Compilerを無効にする指定。 これだと起動が速くなったりするだよ。
ほかにデバッガーも動くんだけど, ソレは Java2じゃないとダメ。
java org.mozilla.javascript.tools.debugger.Main XXXXX.js
Manifest = 明らかにする -- 2002.1.31
Java のプログラムを動してみよーにも, その名前が分かんないってことあるよね。そんなことない? *.jar とか *.zip とか, そーゆー中にプログラム(てゆーか, メインのクラス)が入ってるってときは, プログラム名 ・・ てゆーか クラス名がどーしても分かんないことがあるのら。
Java2 (1.2.xとか 1.3.xとか, ソレ以上のブツ) だったとしたらソレは簡単にょ。 -jar オプションを指定するだけで, main()が入っている部分のクラス名を取り出してくれるから。 だからソレを知る必要もないし, 単に *.jarのファイル名を指定するだけで実行できちゃうって寸法にょ。
困るのは Java 1.1.8 (つまり Java2以前)のばーいだね。クラス名の指定は必須なんだから, *.jarファイルを展開して, main()が入っているとこを見つけ出さなきゃなんないのら。 てゆーか, 展開したって, 名前でそれとなく「コレかな?」なんてアレするだけで, 結局一つ一つ試してみるしかないのかも。(T-T)
・・・ なーんてね。
j2ch-cache のソレを見つけるのはホントは簡単だったのら。
( -jarオプションでクラス名を省略可能な) Java2であっても, Java2ソレ自身が mainを見つけるためにアーカイブ全体を探し回ってる訳じゃなくて, 名札のよーなものを見つけてるだけのはずだお。
てことで, 手順とともにその種明しを紹介していこー ・・・ なんてゆってるけど, もしかしたら Javaの資料か何かに書かれてる可能性が高かったりするもん。(^^)
- unzip で一部のファイルを展開する → unzip j2ch.jar *.MF
- 展開できた そのファイル MANIFEST.MF の中身を調べてみる。たとえばこんな(↓)感じ。
Manifest-Version: 1.0 Main-Class: j2ch.cache.J2chServer Created-By: 1.3.1_01 (Sun Microsystems Inc.)
- そーこれこれ, コレ(↑)が探してる名前だお。念のためにアレすると Sun Microsystemsてとこじゃなくて, その上にょ。
◇
こんなに簡単だった訳にょ。もちろん, update.jar のソレも同じ方法で見つけたもん。
Java 1.1.8で動かすことができるブツって少なくなってるかもだけど, 「もしや」なんて思うプログラムは, こーやって動かすことができるかもよ。
責任持てないけどね。えへへ。
通信: Java Communications API -- 2001.12.5
… コミュニケーションズつっても, シリアル/パラレル通信のこと。 つまり, コレ使って Javaから COMポートにアクセスできたりする訳にょ。 詳しくはここ見てけろ。 → 「Java(TM) Communications API for OS/2, Version 2.0.1 - Technical Information」
JVMさえ用意されてれば, Javaなプログラムならどの環境でも動く … とはゆっても, コレはちょいと違うのら。 こーゆー部分って nativeなトコだから, 限られた環境でしか動かなかったりするのら。 だから, Java Communications API[java.sun.com] 見てみても, コレくらいのプラットフォーム上のしか載ってないにょ。
- Version 2.0 for Microsoft Windows and Solaris/x86
- Version 2.0.2 for Solaris/SPARC
もちろん, ここに載ってる以外に OS/2でも使うことができる訳なんだけどね。
(↑)の OS/2のページからたどって downloadできるから。へへへのへ。
んで, ソレを使うには, ほかの環境のも持ってた方が なにかと便利だお。
σ(^^) のばーい, Solaris/x86用のを持ってきて, tar xvfz で解凍してるにょ。
さてー, コレを使うには, いくつか準備が必要なのら。 添付のreadmeに詳しく書いてあるけど ・・・
- comm.jar を, (たとえば Java 1.1.8だとすると) \java11\lib に移す。
- javacomm.prp も同じ場所に移す。 コレは propertiesで, 実際の名前かなにかが入ってるのら。
- os2comm.dll を, (たとえば Java 1.1.8だとすると) \java11\bin に移す。
- SYSLEVEL.JCM も同じ場所に移す。コレってなんだろね。えへへ。
あとは, (Java 1.1.8なら) 環境変数 CLASSPATHに comm.jarを追加するだけ。後に追加するなら こんな感じ。
set CLASSPATH=%CLASSPATH%\java11\lib\comm.jar;
Java2な環境ならもっと簡単で, (たとえば Java 1.3なら)ディレクトリ \java13\jre\lib\ext
に comm.jarを移しておけば, 環境変数 CLASSPATHの指定は必要ない ・・ ハズ。(^^)
◇
環境作ったはよいけど, どーやって動かすのけ?
そう, そのために Solaris/x86版が必要だったのら。ぐへへ。
展開してみると, OS/2版のソレと同じよーなものが見つかるけど, もちろんソレを導入しちゃいけない。
必要なのは, samplesディレクトリの中のブツだけだもん。
その中に シリアルラインモニターみたいなのもあって, ソレが BlackBox てヤツ。
なぜそんな名前なのか。実行すると黒い箱でちゃうのか。そんな数々の疑問をいだきながら走らせてみると, おー, それなりに動くだよ。
何も見ずにでも動かせるだろーけど, そこにあるドキュメントは見た方がよいかも。だって あんなとこクリックできるなんて思わないじゃん。 (←ってなんだ?)
環境変数 CLASSPATHを指定せず 動かす方法もあったっけ。 それを紹介しておこー。 こんな感じにょ。
jre -cp blackbox\blackbox.jar;\java11\lib\comm.jar BlackBox
◇
コレを使って, Palmデバイスと通信するもよし, RxComm とアレしてもよし。 も, 自由自在ってヤツだよね。うじゃ。(^^)/~
Javaアーカイブ -- 2001.7.28
前回, 「ソレが zipファイルなんだっっ」みたいなことをアレしといて, *.jarファイルについて何も書いてなかったね。 今ごろ気づいたりなんかして。わっはははー。
実は, *.zipも *.jarも同じなのだ。うっそだー, どっか違うんじゃない? そう思いたい気持も分からないこともないけど, やっぱし同じなのら。
unzip -l netrexxc.jar とか実行してみると ちゃんと表示されるし, 逆に, jar tvf pbm120.zip とかでもオッケーにょ。
でも, 拡張子的には, いかにも Javaの archiveファイルって感じなので, (ZIP拡張子使うことはできるけど)おすすめはやっぱし *.jarかなっ。
つっても, ソレは使うときの話ではなくて, 提供するときの話だお。 ソフトウェアをdownloadして 使うときには, 別に拡張子はどちらでもよいからね。
てゆーのも, (ブラウザー使って)downloadするとき Javaが勝手に動き出したりなんかすると困ることもある訳で, そんなばーいは (*.jarファイルをアーカイブして)*.zipで提供かな って感じ。
で, コレを扱うことのできるツールは, 先の unzipとか jarなんだけど, Java実行環境がそろっているのなら やっぱし後者だよね。 使い方は, 簡単と言えば簡単。そう, tar (tape archiverだっけ?) と指定の方法はほとんど同じなのら。つーか, 普通の使い方だと全く同じって感じ。(普通じゃない使い方だと微妙にアレだけど)
作成(create) | jar cvf JAR-File |
---|---|
一覧(list table) | jar tvf JAR-File |
展開(extract) | jar xvf JAR-File |
ところでこのアーカイブファイルには, いったい何が入ってるのかっつーと, *.classの他にも *.jpeg, *.gif, *.html とか, そーゆーリソースファイルが入っていることもあるでよ。
アイコンのイメージファイルだとか, ヘルプなんかの文章だったりとか, プログラムで必要になるいろんなアレだーね。
てことは, その気になれば, アイコンを書替えて「パロディー版 Polarbar Mail」を用意することも可能なのかも。うはうは。
さぁ, みんなも改造に挑戦だぁ。 (←って, 何あおってんだ)
(Polarbar Mailはここ)
Javaプログラムの起動方法とか -- 2001.6.11, 2001.6.19
Javaには *.classファイルとか *.zipファイルとか *.jarファイルとかあって (最近 Javaとしてのzipは見かけないかもだけど), なにが何だか訳ワカメ ・・・ てゆーこともあるかも知れない。
でも, 基本は *.classファイルかもね。コレは他のコンパイル可能なプログラミング言語でゆーところの *.o (*.obj)てことになるのかな? つまりモジュール単位でバラバラになっている, みたいな。
でも, ソレらと違うトコは, リンケージエディター(link)でくっつけたりする必要がなく, プログラム起動時に自動的にロードされるってこと。バラバラになってても動作可能なのだ。て, なんだか説明が乱暴だネ。 そして もうひとつの違いは, 起動するときファイル名を指定するんじゃなくて, クラス名を指定するってこと。
クラス名を指定するってのは 微妙な違いのよーでいて, でも, 大きな違いだったりする。
まず, 大文字と小文字が区別される。なので, エート ・・・ 間違えちゃダメ, みたいな。 (ヾ(°∇°*) オイオイ
アーンド, プログラムを作るとき, 先頭が数字で始まるソースファイルでは, コンパイルできないこともあったりする。
クラス名の先頭が数字ってことになっちゃうからね。
規模が小さいうちは *.classファイルだけでよかったかもだけど, 大規模になるに従い(数も増えてきて)管理も大変。 伝え聞くところによると, Javaに標準で用意されているクラス(例えば C言語でゆーとこのprintf()みたいなパッケージ)も 昔はバラバラだったらしいけどね。 んで, ソレらをまとめてひとつのアーカイブとして管理するよーになったらしい。 それが classes.zip (\Java11\lib\classes.zip)だったり。
さて, そんな感じで いくつかの *.classファイルを分類・まとめてアーカイブしちゃったばーい, どんな指定になるのだろーか。どー指定すれば使うことができるのかが問題カモ。
それは, もともと環境変数 CLASSPATHで (*.classファイルの入った)ディレクトリを指定して JVMにその存在場所を知らせてた訳だけど, 今度はディレクトリの代わりに (*.classファイルの入った)アーカイブファイル名を指定できるよーになった訳なのら。
たとえばこんな感じだネ。
set CLASSPATH=C:/usr/local/NetRexx/lib/NetRexxR.jar;C:\Home\EM\EMtoSVG.jar;
◇
ところで, Javaアプリケーションを実行するときには いったい何を使っているだろーか。java.exe? ソレもあるけどソレだけではない。 実は, java.exeのほかに jre.exeてゆーのがあるんだな。ソレはなにが違うのか ・・・
- 名前が違う
- ファイルサイズも違う
- jre では環境変数(CLASSPATH)を使わないっぽい
てことで, 環境変数を使わずにコマンドラインですべて指定したいばーいに便利(?)なのかも。
で, その引数オプションは -cp , -classpath
の二種類。
-cp
は base class pathの前に 指定のパスを探すっぽいにょ。
つまり, コレ(↓)らは同じ意味 ・・ になるはず。分かるカナ?
jre -cp NetRexxR.jar;EMtoSVG.jar; EMtoSVG
jre -classpath NetRexxR.jar;EMtoSVG.jar;C:\java11\lib\classes.zip; EMtoSVG
-classpath
てゆー指定は, jre.exeだけでなく java.exeでも使うことができて, 動作も同じ っぽい。
base class pathの \Java11\lib\classes.zip を省略できないとこも同じ ・・ なので コレ(↓)だったら, javaも jreも同じ動作になるにょ。蛇足かもだけど。
java -classpath NetRexxR.jar;EMtoSVG.jar;C:\java11\lib\classes.zip; EMtoSVG
jre -classpath NetRexxR.jar;EMtoSVG.jar;C:\java11\lib\classes.zip; EMtoSVG
これらは, Java 1.1.8でのアレなんだけど, Java2 つまり 1.2だとか 1.3とかそれ以上だったら, 環境変数をいろいろ操作することなく使えちゃうらしいのら。 どーするかっちゅーと, \java13\jre\lib\ext\ 以下に, 該当するアーカイブファイルをコピーするだけ。・・ のはず。
◇
あうー。アプレットの動かし方とか, そーゆーアレもあったけどパス。では。(^-^)/~
なぜかいきなり Java: Copy&Paste -- 2001.6.6
Javaっぽいプログラム作ってると, 異なる環境でも動かせるよーに いろいろ考慮されているのが 分かるよーな分からないよーな, そんな感じがする。 (←どんなだ)
ま, 使ってるのは NetRexxだけど, シンプルな Javaコードを生成してアレするので, Javaプログラミングと読み替えても差し支えないカモ。
で, 普通となにが違うって, まずフォントが違ってたりする。 プラットフォーム間で同じよーにするため, かなり質素なものになってる感じがするのら。
AWT使ったソレのばやい, なんだかとりあえず出しました〜 みたいなフォントで, 読みづらかったりするし, でも, フォントパレットは有効っぽいから 好みのフォントをDropすればよいんだけど ・・・。
んで, ソレが Swing使ったもののばやいだと (AWTよりもよさげな)ソレなりのフォントなんだけど, こんどはフォントパレットが効かない。
つーか, フォントに限らず テキスト入力なんかも ゆーずーがきかないっちゅーか本中華。
◇
入力項目におけるキー操作も, PMのものと違い, しかも, AWTと Swingでも異なってるっぽい。
調べたところによると, AWTでのテキスト入力は Ctrl+Ins とか Ctrl+Del は効くけど, マウス操作の Pasteは効かない。でもマウス操作の Copyは効く, みたいな。
んで, Swingでのテキスト入力は, それらすべて無効で, Ctrl+X/Ctrl+C/Ctrl+Vだけが有効。
選択した文字列の色が変わったりするトコは Swingってよさそげなんだけど, マウス操作で Copy&Pasteできないのは人によっては辛いかも。
操作 | AWT | Swing | ||
---|---|---|---|---|
TextField | TextArea | JTextField | JTextArea | |
マウスでの Copy | ○ | ○ | × | × |
マウスでの Paste | × | ○ | × | × |
Ins, Delキーを使った Cut&Copy&Paste | ○ | ○ | × | × |
Ctrl+X Ctrl+C Ctrl+V | ○ | ○ | ○ | ○ |
Swingって見栄えはよいけど, すべて(の Javaアプリ)をソレにするのは問題アリなのかも。てことで ベースは Swing, 入力エリアは AWTてゆーのも手かも?
ちなみに (↑)の環境は Java 1.1.8でのテストだお。