ホーム>source

以下に示すように、多数の増分ボタンと減分ボタンを含むレストランメニューのユーザーインターフェイスを実装しています。UIを作成するためにSceneBuilderを使用したことに注意してください。

各ボタンをループし、マウスクリックでその隣のテキストフィールドを更新できるようにするために、多くの方法を試しましたが、arrayListを介してこれを実装できませんでした-arraylistが正常にいっぱいであることがわかっていると、nullポインターエラーを受け取り続けますボタン。 これが私が試したものです: 適切なボタンのfxidを指定してリストを埋める方法があります-

<前>ウィズウィズ

次に、これらの各ボタンを反復処理して、テキストフィールドから現在のカウンター値を取得するようにonactionを設定するメソッドもあります(これもリストにありますが、対応するボタンとテキストフィールドは同じインデックス位置にあります) )このメソッドは、コントローラクラスの「初期化」で呼び出されます。

<前>ウィズウィズ

注:foodCounterListは、各テキストフィールドの現在の値を含む整数のリストです。 'theTextFields'は、各テキストフィールドを含むリストです。 更新:マットによって提案された改善を実装しようとした後のコントローラークラスは次のとおりです。

<前>ウィズウィズ plusButtonList.add(soupPlus); plusButtonList.add(guacPlus); plusButtonList.add(empanadaPlus); plusButtonList.add(jalapenoPlus); plusButtonList.add(quesaPlus);
あなたの答え
  • 解決した方法 # 1

    だから私は同様の問題がありました。配列リストからクリックされたボタンに応じて、特定のイベントをトリガーする特定のボタンを取得しようとしました。これが私の解決策でした。最初に.isPressed()を使用してみましたが、常にfalseが返されたため、isArmed()に変更して機能しました。多分それを試すことができますか?私のコードは以下に書かれています。

    serveButtonsは、さまざまなボタンをすべて含むarrayListでした。 orderContentsListは、変更されるtextAreasを含むarrayListでした。

    <前>ウィズウィズ

    arrayListsについてさらに情報が必要な場合は、お知らせください。

  • 解決した方法 # 2

    まず、このソリューションで静的リストを使用している理由がわかりませんか?その場合、私はそれらをプライベートとしてマークする必要があると思います。 次に、メソッド "checkIfIncrement"には、その処理に適切な名前が付けられていないと思います。あなたのコードから、私はそれがsetButtonsListeners()と名付けられるべきだと思いますか? FXMLファイルのインクリメント/デクリメントボタンに適切なfx:id = "exampleName"を追加しましたか?多分それはNPEを引き起こしています。 fstackファイルをここにエラースタックトレースと共に貼り付けてください。

    int which = 0; for (int i = 0; i < serveButtons.size(); i++) { if (serveButtons.get(i).isArmed()) { which = i; break; } } orderContentsList.get(which).setText(null);

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ assembly - ADDCとADD