2016-11-05 6 views
0

私はJavaFXフォームプログラムを作っています。フォームデータは、GUIエレメント(ラベル)とそのデータメンバーを含むオブジェクトであるノードのArrayListsであるPagesのArrayListを使用して処理されます。そのよう
クリックされたノードが帰属するオブジェクト(ArrayList内のオブジェクト)をどのように通信できますか?

メイン宣言

private final ArrayList<ArrayList<FormNode>> form = new ArrayList<>(); 
private final ArrayList<FormNode> page = new ArrayList<>(); 
int currentNode = 0; //index of currently active node 

オブジェクトクラス

public class FormNode { 

    private String nodeName; 
    private boolean visible; 
    private boolean editable; 
    private Label nodeGUI; 

    //Constructor...Sets...Gets...Methods 

} 

ノードが初期化されると、それがペインに追加し、イベントを割り当てられ、別のクラスを介してハンドラを使用します。私がしようとしているのは、どのオブジェクトがそれに関連付けられているノードをクリックしてアクティブであるかをプログラムに伝えるようにして、アクティブノードとしてフラグを立てることです。このような

何か(ない本当に私の実際のコード、私は必要なものだけの擬似):

...

nodeGUI.setOnMousePressed(new EventHandler<MouseEvent>() { 
    @Override public int handle(MouseEvent mouseEvent) { 

     --- call a method to assign the value --- 
     currentNode = thisNodesIndex; 


    } 
    }); 
を呼び出すGUI、で目的のラベル(ノード)をユーザーがクリックします

考えられるのは、その値をcurrentNodeに割り当てるために、入れ子になったページArrayListのFormNodeオブジェクトのインデックスを返すことです。

今のところすべて正常に動作しますが、インデックスにアクセスすることは問題です。データはLabel自体(x、y、height、widthなど)からアクセスされますが、他の属性を操作できるように、オブジェクトのメンバーとして認識される必要があります。 (すなわち、nodeName,visibleなど)。

アイデア?

答えて

0

私は本当にあなたが尋ねていることを理解しているが、これを試してください。あなたのケースでは

@Override 
public void handle(Event evt) { 
    System.out.println(((Control)evt.getSource()).getId()); 
} 

:私は明確ではないよ場合

nodeGUI.setOnMousePressed(new EventHandler<MouseEvent>() { 
    @Override 
    public int handle(MouseEvent mouseEvent) { 
     //--- call a method to assign the value --- 
     currentNode = thisNodesIndex; 
     System.out.println(((Control)mouseEvent.getSource()).getId()); 
    } 
}); 
+0

申し訳ありません。私は基本的に物事を少し後ろ向きにする方法を尋ねています。特定のインデックスのarraylistにアクセスすることによって、誰かがarraylistのオブジェクトの変数や属性にアクセスする場合、特定の属性がどのオブジェクトから(どのインデックスで)取得されたかを知りたいと思います。この場合、GUI内のノード(ボタン、ラベルなど)。私がクリックすると、そのオブジェクトを取得したいと思います。作成した3番目のラベルをクリックすると、そのオブジェクトに含まれるラベルが 'form.get(3)'にあることがわかります。私は戻って3を得るために探しています。 – LazyBear

+0

私はあなたの提案を試み、それが私が探しているものかどうかを見ます。ありがとう – LazyBear

関連する問題