タイトルJava Watch on the X》4 - アプリケーションをパッケージとしてビルドする(6)Mac OS X向けのプロパティカテゴリーProjectBuilder/Interface Builder, Java, Java Watch on the X
作成日2002/1/24 16:21:39作成者新居雅行
Mac OS Xで作成するPure Javaアプリケーションで指定する設定のうち、クラスパスやメインクラスといった必須の設定はすでに説明した通りである。これら以外にも動作にかかわる設定はいくつかあるので、それらをまとめて紹介しよう。
以下は、いずれも、MRJApp.propertiesないしは、Info.plistファイルに指定できる。MRJApp.propertiesを使う場合は、すでに用意されていると思われるので、そこに、以下に紹介する値を「キーワード = 値」の形式で指定する。この記述を基本的には1行にまとめておく。なお、新たにMRJApp.propertiesを作成してプロジェクトに追加した場合には、プロジェクトの設定での「ファイルとビルドフェーズ」で、Bundle ResourcesにMRJApp.propertiesの項目があるように設定をしておく必要がある。
Info.plistでの設定は、プロジェクトの設定の「アプリケーション設定」のタブで「詳細設定」のボタンをクリックして行う。JavaやPropertiesという階層の下に新たな項目を作成する。これらの項目がない場合には作成して、クラスを「辞書」にしておけば良い。以下は設定例である。なお、ここで紹介するプロパティは、論理値のものが多いが、いずれも、trueかfalseを文字列として指定する必要がある。

◇Java関連のプロパティを設定した
 


★テキストのアンチエイリアスをオンあるいはオフにする。(既定値はtrue)
(MRJApp.properties)com.apple.macosx.AntiAliasedTextOn = 設定値
(Info.plist)Java→Properties→com.apple.macosx.AntiAliasedTextOn
(設定値)文字列で、true ないしは false

◇com.apple.macosx.AntiAliasedTextOnがtrueの場合
 
◇com.apple.macosx.AntiAliasedTextOnがfalseの場合
 

この例では、GraphicsクラスのdrawStringメソッドで描いた文字でのアンチエイリアスの設定が聞いているが、ボタンなどのコンポーネントでも同様に反映される。なお、タイトルバーは反映されていない。

★グラフィックス描画のアンチエイリアスをオンあるいはオフにする。(既定値はtrue)
(MRJApp.properties)com.apple.macosx.AntiAliasedGraphicsOn = 設定値
(Info.plist)Java→Properties→com.apple.macosx.AntiAliasedGraphicsOn

★グラフィックス描画で利用するハードウエアアクセラレータの機能をオンあるいはオフにする。(既定値はfalse)
(MRJApp.properties)com.apple.hwaccel = 設定値
(Info.plist)Java→Properties→com.apple.hwaccel
(設定値)文字列で、true ないしは false

Mac OS X 10.1.2の段階では、ハードウエアアクセラレーションの機能は「プレビュー」の段階であるとしている。いずれ安定して利用できるようになれば、この設定の初期値はtrueになる予定となっている。

★Swingでルック&フィールにAquaを使っている場合、メニューをSwingの本来の位置、つまり、ウインドウのタイトルバーの直下にセットする。既定値やfalseに設定すると、メニューは、画面上部のメニューバーに表示される(既定値はfalse)
(MRJApp.properties)com.apple.macos.useScreenMenuBar = 設定値
(Info.plist)Java→Properties→com.apple.macos.useScreenMenuBar
(設定値)文字列で、true ないしは false

◇com.apple.macos.useScreenMenuBarがtrueの場合
 

なお、アップルメニュー、アプリケーションメニュー、キーボードメニュー、インプットメソッドのメニューなどは、常にメニューバーに表示される。

★ウインドウ右下のリサイズボックスをウインドウのコンテンツに含める。含めないようにすると、ウインドウ下側に余分に15ドット分広げてそこにリサイズボックスを描画する。(既定値はtrue)
(MRJApp.properties)com.apple.mrj.application.growbox.intrudes = 設定値
(Info.plist)Java→Properties→com.apple.mrj.application.growbox.intrudes
(設定値)文字列で、true ないしは false

★ウインドウのリサイズ中に内部の描画を行う。(既定値はfalse)
(MRJApp.properties)com.apple.mrj.application.live-resize = 設定値
(Info.plist)Java→Properties→com.apple.mrj.application.live-resize
(設定値)文字列で、true ないしは false

★アプリケーションメニューの最初の「……について」とで利用する名前を設定する。既定値は何もなしだが、そのときは「……について」のメニューは表示されない。アプリケーションメニュー名や終了メニューにでてくる名前との対応に注意が必要である。
(MRJApp.properties)com.apple.mrj.application.apple.menu.about.name = 文字列
(Info.plist)Java→Properties→com.apple.mrj.application.apple.menu.about.name

◇アバウトメニューを設定した場合
 

この場合は、com.apple.mrj.application.apple.menu.about.nameに「MyApp」と設定したが、それは最初の項目だけに採用されている。メニューバーやQuitメニューには、「表示名」や「実行可能ファイル」の設定(Info.plistではCFBundleExecutableおよびCFBundleName)にある文字列が表示される。

★AWTのFileDialogクラスによるファイル選択のとき、アプリケーションパッケージをフォルダとして扱うか、ファイルとして扱うかの選択を行う。既定値はフォルダとして扱い、パッケージの中身が見える。このプロパティにtrueを設定すると、アプリケーションはファイルのように扱える。(既定値はプロパティ自体を未定義)
(MRJApp.properties)com.apple.macos.use-file-dialog-packages = 設定値
(Info.plist)Java→Properties→com.apple.macos.use-file-dialog-packages
(設定値)文字列で、true ないしは false

◇com.apple.macos.use-file-dialog-packagesがtrueの場合
 
◇com.apple.macos.use-file-dialog-packagesがfalseの場合
 

★タブのサイズを指定する。falseにするとサイズを大きめにしてAqua風になる。既定値ではプロパティ自体が設定されていないが、その状態ないしはtrueを設定すると小さ目の文字となって、Metalなどのルック&フィールに近い感じになる。ただし、タブの内容によって変化がないときもある。
(MRJApp.properties)com.apple.macos.smallTabs = 設定値
(Info.plist)Java→Properties→com.apple.macos.smallTabs
(設定値)文字列で、true ないしは false


Swingを使ったアプリケーションなど、Pure Javaのアプリケーションでは日本語関連の問題が指摘されている。たとえば、そのままメニューの名前に漢字などを指定しても、文字化けするのである。フォントを指定すればいいのであるが、それでは、プログラムの修正が多大になってしまう。何らかの解決策はいずれ示されるかもしれないが、とりあえずの対応としては、プロジェクト設定の「アプリケーション設定」を「詳細設定」にしたときに表示される項目の「CFBundleDevelopmentRegion」を「English」から「Japanese」にすればよい。そうすれば、コンポーネントの中で表示される日本語が文字化けることはなく表示される。また、アプリケーションメニューの項目も「About」以外は日本語になる。

◇日本語のテキストが文字化けされずに表示される
 
◇アプリケーションメニューも日本語になっている
 

ただし、この状態でも、漢字入力などを行っていると、応答が鈍くなる場合がやはりでてくるので、完全な解決ではないと思われる。
この対処方法が最終的なものかどうかは不明であるが、やはり他の機能に比べて場当たり的な気が強くする。基本的にはCocoaなどと同じように、システムのデフォルト設定等を勘案して、適切な言語設定で利用できるようにするのが望ましい形だと思われる。Mac OS Xはnibファイルを言語ごとに用意できる機能もあるが、Javaでも同様に言語に対応したリソースを持つ機能もあるので、そうした機能と連動することにより、日本語の問題も自然に解決されるのではないかと考えられるが、いずれにしても、しばらくはこういった方法も有効であると言えるだろう。
関連リンク