実現したいこと
現在WindowsをプラットフォームにjavaFXでアプリを開発中です。アプリを操作するためにaltキーを使いたいのですが、アプリの動作と同時にメニューバーも反応してしまいます(Wndoesの仕様)。それをdisableにしたいのですが方法がわかりません。
もちろん、Key pressイベントとKey releaseイベントでevent.consume()はしているのですが反応しないようです(ソース参照)。
どなたか実現方法を教えてください。event.consume()でなくてアプリ使用中はjavafxからWindowsのメニューバーのmnemonic機能そのものを反応しなくするような方法でも構いません。よろしくお願いします。
発生している問題・分からないこと
keyPres、keyReleaseでevent.consume()してもaltキー押下でWindowsおメニューバーが反応してしまう。
該当のソースコード
javaFX
1rootbp.sceneProperty().addListener((observable, oldScene, newScene) -> { 2 if (newScene != null) { 3 newScene.setOnKeyPressed(e -> { 4 e.consume(); 5 switch (e.getCode()) { 6 case KeyCode.ALT: 7 kyev.kyalt = true; 8 ----------------- 9 break; 10 ------------------ 11 });
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
stackoverflowの下記は確認済です。
https://stackoverflow.com/questions/36009964/how-to-disable-mnemonic-for-javafx-menubar
上記の詳細・結果
stackoverflowなど調べまくってその通りにしてみましたがうまくいきませんでした。またkeyTypedイベントの場合は、altキーのcharacterが取得できないので使えません。
補足
特になし
Altキーをどう使いたいんですかね?
stageのaddEventFilter中でconsumeしたら
* Altキーは拾える
* Alt+Fとかでファイルメニューは開かなくなる
ようにはなりました。
ただ
* Alt+Tab(ウィンドウ切り替え)は当然として
* Alt+Space(システムメニュー)や
* Alt+F4(アプリの終了)も
止められませんでした(まあ下ふたつは個別に対応可能かもしれません)
あと例えばTextAreaにキャレットがある状態で、Alt+Fを単なるF扱いにするみたいなこともざっと試しただけでは無理でした(イベントを捏造するような手法)
[JavaFxで矢印キーの入力を受け取りたいです。](https://teratail.com/questions/0t0tm2w1ru0iuo)
コメントありがとうございます。stageのaddEventFilter中でconsumeしたらできました。
大変助かります。
因みにやりたいことはALTを押しながら図形をクリックすると図形が変化する機能です。それもメニューが反応することなくできました。
ありがとうございます。
ベストアンサーに選びたいので同じ内容を回答欄に投稿いただけますでしょうか?

回答1件
あなたの回答
tips
プレビュー