2

JavaFX クライアントを開発しています。2ペインのソフトウェアです。Application_1左ペインは、クライアント ( 、Application_2など)用に開発されたいくつかのアプリケーション (レイアウトが異なる) を示すリストです。右側のペインは、 が表示される場所Application_Nです。

ソフトウェアの右側のペインに表示されるアプリケーションには、次の Java クラス階層があります。

BorderPane -> Application(私が開発したアプリケーションクラス)。

Applicationクラスには、フォームを含むNode属性 ( Nodebody;) があり、このフォームにはField.

アプリケーションが前述の右側のペインに表示されている場合、 メソッドrequestFocus()を呼び出します。このメソッド (JavaFX クラスから上書きされたもの) は、前述のフィールドのNodeフォーカス (今回requestFocus()は JavaFX クラスの元のメソッドを使用) を要求する義務があります。 Node.

この手順はうまくいきます。ただし、問題は、ボディScrollPaneを含むa を追加する場合です。は、ボディ内のフィールドへのリクエスト フォーカス メソッドを許可していないようですNodeScrollPane

以下に記述されたコードは、Application.javaからのものです。

  Node body;

  body = getBody(); // getBody() builds the UI of this application

  scrollPanel = new ScrollPane();
  scrollPanel.setHbarPolicy(ScrollBarPolicy.AS_NEEDED);
  scrollPanel.setVbarPolicy(ScrollBarPolicy.AS_NEEDED);
  scrollPanel.setFitToWidth(true);
  scrollPanel.setFitToHeight(true);
  scrollPanel.getStyleClass().add("application");
  scrollPanel.setContent(body);

  this.setCenter(scrollPanel);

  ...

そして、アプリケーションが表示されるときに、以下のコードが実行されます。

   public void create(){
       requestFocus();  
   }

   @Override
   public void requestFocus(){
    accountField.requestFocus(); //using the method from the JavaFX node class
}

階層にスクロール ペインを配置すると、問題が発生することを繰り返します。誰かがこれに対するコメントまたは解決策を持っていれば、私は感謝しています。ありがとうございました。

4

1 に答える 1