簡體   English   中英

如何傳達被單擊節點歸屬於哪個對象(在ArrayList中)?

[英]How can I communicate which object (within an ArrayList) a clicked node is attributed?

我正在制作JavaFX表單程序。 表單數據使用頁面的ArrayList處理,而ArrayList是Nodes的ArrayLists,Nodes是包含GUI元素(標簽)及其數據成員的對象。
像這樣:

主要宣言

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

}

初始化節點后,會將其添加到窗格中,並通過單獨的類分配事件處理程序。 我想做的是讓程序通過單擊與之關聯的節點來傳達哪個對象處於活動狀態,因此可以將其標記為活動節點。

這樣的東西(實際上不是我的實際代碼,只是我需要的偽代碼):

用戶在GUI中單擊所需的標簽(節點),這將調用...

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

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


    }
  });

想法是返回嵌套頁面ArrayList中FormNode對象的索引,以為currentNode分配該值。

現在一切正常,但是訪問索引很麻煩。 數據是從Label本身(x,y,高度,寬度等)訪問的,但是我需要將其識別為對象的成員,以便可以操縱其他屬性。 (即nodeNamevisible等)。

有任何想法嗎?

我不知道我是否真的了解您的要求,請嘗試一下。

@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());
    }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM