Macへ移植
フリーソフトで公開している「洋裁CAD」、JavaSwingで開発し、Windows用で出していました。
今回GUIをFXに差し替えてついでにMacでも動くようにしてリリースしました。
Macへの移植対応で気付いた点、つまづいた点をまとめてみました。
使ったOS、
Java
楽天 は、
Windows10 Java1.8.0-161
macOS HighSierra Ver10.13 Java1.8.0-644
です。
Macは今まで全く使った経験がなかったのですが、この対応を目的に購入したものです。使い慣れてないので、基本的な操作もわからず、苦労しました。
いろいろ書いてますが、もしかしたら私の勘違いが混ざっているかもしれません。
Win→MacへJavaFXアプリを移行させる人の参考になればと思い掲載しています。
Mac用JavaFXの動作が怪しい
新しいからでしょうか、Windowsでは正常に動くのに、Macでは挙動が違ったり、フリーズしてしまうことがありました。
setAlwaysOnTopがうまくいかない
親stageを開いている状態で子stageを開き、子を常に前面にしておきたいので、setAlwaysOnTop(true)にしてもなぜかうまくゆかない。
いろいろやってみたところ、親をいったん最前面に設定したのち解除、その後子stageを最前面に設定するとなぜか動くいた。
全画面表示の不具合
親stageを全画面表示にすると、次に開く子stageもみんな全画面表示になってしまう。
仕方ないのでstageはすべて全画面にできないように設定することで回避。
Swingのダイアログを表示させるとフリーズ
FXでメッセージ等を表示するにはAlertを使います。Windowsの場合、FXのアプリ中でSwingのメッセージであるJOptionPaneを表示させても問題なく動作します。
Macで同じことをするとフリーズしてしまいました。FXでSwingを使うのがいけないのですが、メッセージも出ずにフリーズなので、原因を特定するのに時間がかかりました。
印刷の問題
一部の文字が化けてしまう。画面に表示させるときは問題ないのだけど、そのまま印刷すると化けてしまう。
なぜか半角ばかり化ける。FXのバグかなと思ったので、ここは解決できないまま。
用紙のサイズと方向をページセットアップダイアログを使わずに設定している。Winは設定どおり印刷するけど、Macは反映してくれない。
Macだと全部の用紙がA4になってしまう。仕方ないので、Macの場合だけ、ページセットアップダイアログを表示させ、そこでサイド設定するようにした。二度手間だけど仕方ない。
仕様の違い
WindowsとMacではOSレベルの基本的な差があるので、これも共通化するときの支障になりました。
フォントの大きさがWindowsとMacで異なる。
windowsは12Pt、Macは13Ptだそうです。
そのまま使うとMacだけstageからボタンなどがはみ出してしまいます。どちらも12Ptとなるように、すべてのNodeのフォントを設定することにしました。
Swingでのフォント統一はプログラム中で行いますが、FXはCSSファイルを用いて行うのが標準だそうで、CSSファイルを追加して設定しておきました。
マウス操作の違い
WinとMacではホイールを回したときの移動方向が標準では逆
Winはホイールの回転量と移動量が比例するけど、Macでは回転速度で移動量が増える。操作上Macの仕様では支障が出るので修正しました。
Macの場合はホイールをゆっくり回すと移動量0になってしまうので、この点ちょっと困る。
エンコードの違い
Eclipseを使って開発している間は気付かなかったのですが(Eclipseが勝手に調整してる?)、Jarファイルにして動かすとファイルIOでエンコードの差が現れてファイルが読めなくなってしまう。
ファイルの入出力時にエンコードを指定してなかったので、指定して保存、読み込みするようにしました。
最終更新日: 2018-02-08 09:46:06