質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.30%
JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

694閲覧

JavaFxで矢印キーの入力を受け取りたいです。

motox

総合スコア3

JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

1グッド

0クリップ

投稿2023/02/21 13:16

実現したいこと

JavaFxで矢印キーの入力を受け取りたいです。

発生している問題

fxmlを用いて矢印キーの入力を受け取りたいのですが、ウィンドウ内にボタンやタブがあり、矢印キーを押すとその選択をするような形でキーの取得ができません。ボタンやタブが青く縁どられて、上下左右にキーを押すとそれに対応してほかのボタンやタブが選択されてしまいます。

教えてほしいこと

この矢印キーでの選択の無効化方法を教えてほしいです。

JDK

19.0.2です

TN8001👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jimbe

2023/02/21 14:35

状況が確認出来る、動作するコードをご提示ください。
motox

2023/02/22 14:18

すみません一度テストで動かしたもののうまく動かなかったので全部消してしまいました... 次からは心がけます!
guest

回答1

0

ベストアンサー

この矢印キーでの選択の無効化方法を教えてほしいです。

キーボードを一切気にしないでいいなら、各コントロールのfocusTraversablefalseにすれば移動しなくなります([TAB]キーも効かなくなります)
Node#focusTraversable (JavaFX 8)


イベントフィルタで矢印キーを飲み込んでしまっても、移動しなくなります([TAB]キーは効きます)

Java

1scene.addEventFilter(KeyEvent.ANY, event -> { 2 if (event.getCode().isArrowKey()) event.consume(); 3});

Node#addEventFilter (JavaFX 8)
3 イベント・フィルタの使用(リリース8)

しかし一律に禁止してしまっては、操作できないコントロール(TextFieldとか)が出るでしょう。
コントロールごとに判断したり、イベントのすげ替え等必要になるかもしれません。
JavaFX: scrolling vs. focus traversal with arrow keys - Stack Overflow

特定のPane内だけにするほうが影響が少ないと思います。
java - JavaFx Focus on Pane with click - Stack Overflow

投稿2023/02/21 22:47

編集2023/02/22 22:05
TN8001

総合スコア10088

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TN8001

2023/02/21 22:47

実際にやりたい具体例があれば、より良い解決法があるかもしれません。
motox

2023/02/22 14:16

初めてここで質問をしたので怖かったのですがご丁寧な回答をありがとうございます。自分の環境で試してみたところきちんとキーボード入力を受け取れていました! 一つだけ、入力をすると多分押したときと離した時の両方が検出されるのですが改善方法があったら教えてください...
motox

2023/02/22 14:17

実際にやりたい具体例としては表を表示し、それを上下の矢印で選択を操作して、タブを左右の矢印で選択して、入力をするものを作りたいのですが、それを使う環境でマウスが使えないとのことなのでマウス操作によってタブの切り替えか表の切り替えなのかを選ぶ必要があると思い、キーボード操作を全部取得して動かせるようにしたいと思いました。
TN8001

2023/02/22 21:30

> 自分の環境で試してみたところきちんとキーボード入力を受け取れていました! 👍 > 入力をすると多分押したときと離した時の両方が検出される addEventFilter(KeyEvent.KEY_PRESSED, // 押した時 addEventFilter(KeyEvent.KEY_RELEASED, // 離した時 [KeyEvent (JavaFX 8)](https://docs.oracle.com/javase/jp/8/javafx/api/javafx/scene/input/KeyEvent.html) > 表を表示し、それを上下の矢印で選択を操作して、タブを左右の矢印で選択して、入力をするものを作りたいのですが、それを使う環境でマウスが使えないとのこと なるほど...「業務アプリで特殊な操作を要求されている」って感じでしょうか。 通常はAccelerator(Ctrl+N 等)やMnemonic(Alt+N 等)で対応するところですが、おそらく簡単操作(1キーのみ)じゃないとダメなんでしょうね... わたしは逆にマウスのみ派なので、その辺の知見はまったくありません^^; 標準に修飾キー+矢印キー操作が結構あるので、その辺とかち合わないように注意してください(isControlDown()・isShiftDown()等をちゃんと確認する) [Keyboard Navigation - OpenJDK Wiki](https://wiki.openjdk.org/display/OpenJFX/Keyboard+Navigation#KeyboardNavigation-TableView) [KeyEvent (JavaFX 8)](https://docs.oracle.com/javase/jp/8/javafx/api/javafx/scene/input/KeyEvent.html#isShiftDown--)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問