« XQuartz 2.7.9 アップデートではまる | トップページ | 診療中に ORCA の印刷止まる »

2016年7月 1日 (金)

Retina iMac 対応

結構高いので,昨年からどうしようかと悩んでいたが,ついに物欲に負けて Retina iMac 27 インチモデルを購入した。OpenDolphin に細かい修正を加えて Retina 対応した。

  • JTable のグリッドを表示すると,グリッドが2ドット幅になって,しかも少しずれてしまう。 workaround を探していたところ,レンダラの print(Graphics)を Override して,以下のように,はみ出して線を引くと1ドット幅の線が描けるのに気付いた。通常の解像度ではこの線は表示されない。
    // grid for retina iMac
    @Override
    public void paint (Graphics graphics) {
      super.paint(graphics);
      Graphics g = graphics.create();
      g.setColor(Color.WHITE);
      g.drawLine(0, getHeight(), getWidth(), getHeight());
      g.dispose();
    }
    
    左が JTable のグリッドを表示したもの,右が上記のコードで1ドット幅の線を引いたもの。

    Scr5

    どうもバグを利用している感がある。

  • JavaFX のフォントが今ひとつ汚くて,ヒラギノ丸ゴシックでごまかしていたが,Retina にしたら "Hiragino Sans" できれいに表示されるようになった。
  • コマンドラインから起動したときには自動的に Retina 対応になるが,*.app から起動するときは,パッケージ内の info.plist に以下のキーを追加する必要がある。
    <key>NSHighResolutionCapable</key>
    <true/>
    
    これは,appbundler-1.0.jar の代わりに appbundler-1.0ea.jar を使うと自動的に入れてくれる。

画面の違いは想像以上に明らかで,Retina を見た後で普通の画面を見ると,ボケボケに見えてしまう。初めて PC-98XL の画面を見せてもらった時の感動を思い出した。

受付リスト (下が Retina)

文字のくっきり度が全然違った。

Scr1

JavaFX で作った SchemaEditor (下が Retina)

SchemaEditor のアイコンを SVG で作っていたので,retina にして違いが際立った。

Scr3

« XQuartz 2.7.9 アップデートではまる | トップページ | 診療中に ORCA の印刷止まる »

OpenDolphin」カテゴリの記事