2 posts tagged “java”
日本語を含む .properties ファイルを使うときは、jvmに食わせる前に native2ascii というツールでUnicodeに変換しないといけないということを最近知った。でも物凄く面倒臭い。
ResourceBundleを使ってgettextのようなそうじゃないようなものを作った。JUnitコードを先に書いたけど中々グリーンにならない。そこで中で使われているPropertiesクラスのjavadoc見てみると以下のような記述があった。
なにやら native2ascii でISO 8859-1 に変換しておかないといけないようなので、JUnitコードの中を以下のようにしてみて。プロパティをストリームに保存するとき、またはストリームからロードするときに、ISO 8859-1 文字エンコーディングが使用されます。このエンコーディングに直接表示できない文字には、Unicode escapes が使用されます。ただし、エスケープシーケンスでは 1 文字の「u」だけが使用可能です。他の文字エンコーディングとプロパティファイルを変換する場合、native2ascii ツールを使用できます。
assertEquals("\u3042", gettext._("abc"));
(面倒臭いので「あ」という文字だけ)
更に.propertiesの方もnative2asciiで変換して、Alt-Shift-x tするとようやくグリーンを見ることができました。でもこんなの編集のたびにやりたくないよ。そこで検索。
http://propedit.sourceforge.jp/
というものがあるらしい。早速Eclipseプラグインをインストールした。インストールはEclipse用の更新マネージャを使って楽々でした。
うーん地味に便利で実に便利。native2asciiのことは考えなくてよくなりました。↑のサイトではEclipseプラグインだけじゃなくて、スタンドアロンなアプリケーションも用意されているので状況に合わせてインストールしてみると良いです。
なんだかんだでEclipseは使ってます。ソースコード検索エンジンってやっぱり便利ですね~。「何を今さら」という感じですが、 最近はSwing関連のコードをよく検索していてものすごく助かってます。これまでGUIのコードを書いたことがなかったので、不安になったら検索して...四苦八苦しながらゴリゴリという感じで進めています。
にしても、SwingのJLabel。
JLabelを使って、長いテキストを折り返して表示させたかったのですが。見つけたその方法が...
JLabel label = new JLabel("<html>hoge<br>hogehoge</html>");
最後の</html>は不要みたいですが、これってバッドノウハウじゃんw。そういう用途でJLabel使うな?ということかもわかりませんが、ライブラリの中でクライアント側が渡したStringからJLabelを作っているのでこれしか方法がなさそうだったのです、と。
なんかこう、ビックリしましたよ。