FXMLの多言語対応(未解決・暫定対応)
分からないことだらけで全然進まないよ。
FXML便利。
HTML分かる人間からするとSwingだのJFaceだのでかなり面倒な思いをしたGUIの作成がすごく分かりやすくなった。呼び出しもControllerとの結びつけも実にシンプル。
そんな中、次の課題はラベルの文字列。
普通ならこれまた簡単に対応できててResourceBundleを第2引数で渡せば良いようだ。
label.propertiesならこんな感じ。
FXMLLoader.load(getClass().getResource("screen.fxml"),ResourceBundle.getBundle("label")));
FXMLの方はこんな感じで。
<TextField fx:id="cencel" text="%cancelButton" />
参考:
How to load FXML with values from Preferences in JavaFX?
http://stackoverflow.com/questions/10792890/how-to-load-fxml-with-values-from-preferences-in-javafx
何が普通でないかというと、propertiesはnative2asciiが面倒だから自分用にXMLファイルをリソースとして読み込むResourceBundleを作って使っているのです。
ResourceBundleを継承してるから渡すことはできるけど、getBundleをオーバロードしてるメソッドを使いたい。(キーのマッピングを楽にするための小細工が入ってる)
結局やり方が分からなかったから直接リソースのキーを指定して対応している。
あるいはControllerの方でテキストを設定してあげれば問題ないだろう。
ラベルなんかはできればView側でクローズしたいところだが。
FXMLでclassをimportできるから何かやりようはある気がしている。