シェイプへのフォーカスのリクエストが間違ったコントロールになっています

ラミ・アブドラ

シーン内の長方形にフォーカスをリクエストしようとしています。マウスを使用してこれを行うと、フォーカスを移動できる形状であっても、フォーカスプロパティリスナーが起動しません。図形にEventListenerを追加して、その上でrequestFocus()メソッドを呼び出そうとしましたが、長方形がフォーカスを取得した後、リスナーまたは追加のコードがない別のボタンがすぐにフォーカスを盗みました。そのボタンを削除した後、同じことが別のコントロールによって実行されます(フォーカスを盗んだすべてのコントロールは、ルートノードに追加された順序で長方形の前にあります)。Tabボタンを使用してフォーカスをトラバースしようとしましたが、機能します。では、マウスを使用して長方形へのフォーカスを要求するにはどうすればよいですか?

<VBox maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="232.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
   <children>
      <ToolBar prefHeight="40.0" prefWidth="200.0">
        <items>
          <Button mnemonicParsing="false" text="Button" />
        </items>
      </ToolBar>
      <HBox prefHeight="100.0" prefWidth="200.0" VBox.vgrow="ALWAYS">
         <children>
            <VBox prefHeight="200.0" prefWidth="100.0">
               <children>
                  <ListView id="slotsList" prefHeight="200.0" prefWidth="200.0" />
               </children>
            </VBox>
            <FilmTimeLine HBox.hgrow="ALWAYS" fx:id="timeLine"/>
         </children>
      </HBox>
   </children>
</VBox>

FilmTimeLine内のシーンに追加するRectangleクラス(FilmTimeLineは、ペインの子を持つScrollPaneです。長方形はそのペイン内にあります):

public class EventSlot extends Rectangle {

    public EventSlot() {
        setFocusTraversable(true);
        setWidth(100);
        setHeight(25);
        setFill(Color.web("#9DD3DF"));
        focusedProperty().addListener((observable, oldValue, newValue) -> {
            if (isFocused()) {
                setEffect(FOCUSED_EFFECT);
            } else {
                setEffect(INNER_SHADOW);
            }
        });
        addEventHandler(MouseEvent.MOUSE_PRESSED, (mouseEvent) -> {
            requestFocus();
        });
    }
}

何が起こっているのgif

オレクサンドル

アクションが発生すると、システムはイベントルートを構築します。

マウスイベントは、Rectangle(Nodeから継承されていると思います)、Pane、FilmTimeLineによって処理されているようです。したがって、選択した長方形を除くすべてのノードを無視/フィルタリングするイベントルートを構築する必要があります。

ルートを変更するオプション:

  • イベントの消費。mouseEventを呼び出します。()を消費して、イベントの伝播を停止します。
addEventHandler(MouseEvent.MOUSE_CLECKED, (mouseEvent) -> {
    requestFocus();
    mouseEvent.consume();
});
  • 親ノードをマウス透過ノードにします。setMouseTransparent(true)。trueの場合、このノード(およびそのすべての子)は完全に透過的であるため、すべてのrectaglesmouseTransparentプロパティがfalseであることを確認してください。
pane.setMouseTransparent(true);//the FilmTimeLine is a ScrollPane that has a Pane child
  • イベントフィルターノードを追加します。addEventFilter
pane.addEventFilter(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
    public void handle(MouseEvent event) { event.consume(); };
}); 

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

plsqlこのコードエラーの何が問題になっていますか 'INTOリストのタイプが間違っています'

分類Dev

Gradleが間違ったプロジェクトのlibフォルダーでaarを探しています

分類Dev

オンブラー/フォーカススクリプトの何が問題になっていますか?

分類Dev

tkinter:エントリウィジェットがいっぱいになったときに、キーストロークを失うことなくフォーカスを次のウィジェットに移動します

分類Dev

PHPフォームでは、ドロップダウンリストに.txtファイルの間違ったデータが表示されます

分類Dev

フォームのスクロールバーがスプレッドシートの間違った行にスクロールする

分類Dev

ChromeJavascriptコンソールのデフォルトは間違ったコンテキストになります

分類Dev

JUnitは、正しいアプリケーションコンテキストをロードしているにもかかわらず、間違ったデータベースへのアクセスをテストします

分類Dev

GoogleAppsスクリプトのログのタイムゾーンが間違っています

分類Dev

チェックボックスがオンになっているかどうかに応じて、フォームコントロールまたはフォームグループの有効性を変更する方法を角度で示します。リアクティブフォームを使用します。

分類Dev

サブジェクトがスコープ外になったときにサブスクライブを解除しないと、rxjsサブジェクトへのサブスクリプションによってメモリリークが発生しますか?

分類Dev

スタイルシートをhtmlにリンクする-何が間違っているのですか?

分類Dev

ReactのImmutable.jsシーケンスのループカウントが間違っています

分類Dev

スクリプトのマージ...ファイルオブジェクトのタイプが間違っていますか(多分)?

分類Dev

WhatPulse:トークンが間違っています。このプロファイルを別のコンピューターで使用しましたか?

分類Dev

CORSによってブロックされたリクエスト:プリフライトリクエストへの応答がアクセス制御チェックに合格しない:HTTPokステータスがない

分類Dev

ビルド ファイルの実行中に bazel エラーが発生しました。プロトコルが間違っています。

分類Dev

プログレスバーがいっぱいになり、メインファイルの抽出後に一時停止したときに、FreearcのデフォルトスクリプトにDirectXとVCRedistをインストールします

分類Dev

レールが間違ったコントローラーアクションにリクエストを送信している残り火

分類Dev

エラー404Djangoプロジェクトの現在のパスが間違っています

分類Dev

UnityからインポートされたXcodeプロジェクトでライブラリ名のスペルが間違っている

分類Dev

aspxページでチェックボックスがオンになっている場合、テキストボックス、テキストエリア、ドロップダウンなどの特定のコントロールを無効にします

分類Dev

Googleスマートホームアクション:アカウントリンクが成功し、ステータスコード200のフルフィルメントによってSYNC応答が送信されましたが、GoogleHomeアプリがエラーを報告しています

分類Dev

発信元がCORSポリシーによってブロックされていますプリフライトリクエストへの応答がアクセス制御チェックに合格しません

分類Dev

パッケージリストファイルには、MySQLの間違ったバージョンがリストされています

分類Dev

グローバルな状態を管理するためにReactフックをエクスポートするのは間違っていますか?

分類Dev

Yiiのデータベースへのリクエストが間違っていますか?

分類Dev

ReactJS:CORSポリシーによってブロックされています:プリフライトリクエストへの応答がアクセス制御チェックに合格しません

分類Dev

ソリューションによってプリセットされたプロジェクトファイルのカスタム プロパティ

Related 関連記事

  1. 1

    plsqlこのコードエラーの何が問題になっていますか 'INTOリストのタイプが間違っています'

  2. 2

    Gradleが間違ったプロジェクトのlibフォルダーでaarを探しています

  3. 3

    オンブラー/フォーカススクリプトの何が問題になっていますか?

  4. 4

    tkinter:エントリウィジェットがいっぱいになったときに、キーストロークを失うことなくフォーカスを次のウィジェットに移動します

  5. 5

    PHPフォームでは、ドロップダウンリストに.txtファイルの間違ったデータが表示されます

  6. 6

    フォームのスクロールバーがスプレッドシートの間違った行にスクロールする

  7. 7

    ChromeJavascriptコンソールのデフォルトは間違ったコンテキストになります

  8. 8

    JUnitは、正しいアプリケーションコンテキストをロードしているにもかかわらず、間違ったデータベースへのアクセスをテストします

  9. 9

    GoogleAppsスクリプトのログのタイムゾーンが間違っています

  10. 10

    チェックボックスがオンになっているかどうかに応じて、フォームコントロールまたはフォームグループの有効性を変更する方法を角度で示します。リアクティブフォームを使用します。

  11. 11

    サブジェクトがスコープ外になったときにサブスクライブを解除しないと、rxjsサブジェクトへのサブスクリプションによってメモリリークが発生しますか?

  12. 12

    スタイルシートをhtmlにリンクする-何が間違っているのですか?

  13. 13

    ReactのImmutable.jsシーケンスのループカウントが間違っています

  14. 14

    スクリプトのマージ...ファイルオブジェクトのタイプが間違っていますか(多分)?

  15. 15

    WhatPulse:トークンが間違っています。このプロファイルを別のコンピューターで使用しましたか?

  16. 16

    CORSによってブロックされたリクエスト:プリフライトリクエストへの応答がアクセス制御チェックに合格しない:HTTPokステータスがない

  17. 17

    ビルド ファイルの実行中に bazel エラーが発生しました。プロトコルが間違っています。

  18. 18

    プログレスバーがいっぱいになり、メインファイルの抽出後に一時停止したときに、FreearcのデフォルトスクリプトにDirectXとVCRedistをインストールします

  19. 19

    レールが間違ったコントローラーアクションにリクエストを送信している残り火

  20. 20

    エラー404Djangoプロジェクトの現在のパスが間違っています

  21. 21

    UnityからインポートされたXcodeプロジェクトでライブラリ名のスペルが間違っている

  22. 22

    aspxページでチェックボックスがオンになっている場合、テキストボックス、テキストエリア、ドロップダウンなどの特定のコントロールを無効にします

  23. 23

    Googleスマートホームアクション:アカウントリンクが成功し、ステータスコード200のフルフィルメントによってSYNC応答が送信されましたが、GoogleHomeアプリがエラーを報告しています

  24. 24

    発信元がCORSポリシーによってブロックされていますプリフライトリクエストへの応答がアクセス制御チェックに合格しません

  25. 25

    パッケージリストファイルには、MySQLの間違ったバージョンがリストされています

  26. 26

    グローバルな状態を管理するためにReactフックをエクスポートするのは間違っていますか?

  27. 27

    Yiiのデータベースへのリクエストが間違っていますか?

  28. 28

    ReactJS:CORSポリシーによってブロックされています:プリフライトリクエストへの応答がアクセス制御チェックに合格しません

  29. 29

    ソリューションによってプリセットされたプロジェクトファイルのカスタム プロパティ

ホットタグ

アーカイブ