JWindow を使った JSheet
mac のダイアログは,タイトルバーのあたりからせり下がってくる Sheet という方式になっている。これを java でシミュレートするために,JDialog を undecorated にしたウインドウを使っていた。しかしこれには,JDialog が表示されると親フレームがフォーカスを失って,タイトルバーがグレーアウトされてしまうという,かっこよくない欠陥があった。
JDialog ではなく,JWindow を使えば,親フレームを active にしたままダイアログが出せるのであるが,JWindow を modal にする方法がわからず,ずっと pending になっていた。
時間があるときに JDialog のソースを読んで,modal をどのように実現しているのかを調べていたのだが,ついに SecondaryLoop というのを発見することができた。これを使って JWindow で modal な JSheet を作った。
左:JDialog によるもの,中:JWindow によるもの,右:アニメーションGIF
こういう,機能的にはどうでもよいことにこだわるのは,マカーのマカーたる所以である。
« シェーマの拡大・縮小 | トップページ | 病名検索フィールドをカルテ検索と併用する »
「OpenDolphin」カテゴリの記事
- オン資薬剤情報読み込み機能 (2)(2022.12.10)
- オン資薬剤情報読み込み機能(2022.08.17)