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