首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通信一个点击的节点被赋予属性的对象(在ArrayList中)?

如何通信一个点击的节点被赋予属性的对象(在ArrayList中)?
EN

Stack Overflow用户
提问于 2016-11-05 23:24:36
回答 1查看 61关注 0票数 0

我正在做一个JavaFX表单程序。表单数据使用页面的ArrayList (节点的ArrayLists )来处理,这些页面是包含GUI元素(label)及其数据成员的对象。

就像这样:

主声明

代码语言:javascript
复制
private final ArrayList<ArrayList<FormNode>> form = new ArrayList<>(); 
private final ArrayList<FormNode> page = new ArrayList<>(); 
int currentNode = 0;  //index of currently active node

对象类

代码语言:javascript
复制
public class FormNode {

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

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

}

初始化节点时,将其添加到窗格中,并通过单独的类分配事件处理程序。我要做的是让程序通过单击与其关联的节点来通信哪个对象是活动的,这样就可以将其标记为活动节点。

类似这样的东西(实际上不是我的实际代码,只是我所需要的伪代码):

用户单击GUI中所需的标签(节点),它调用.

代码语言:javascript
复制
nodeGUI.setOnMousePressed(new EventHandler<MouseEvent>() {
    @Override public int handle(MouseEvent mouseEvent) {

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


    }
  });

这样做的目的是返回嵌套页面ArrayList中的ArrayList对象的索引,以便为currentNode分配该值。

现在一切都很好,但是访问索引是个麻烦。数据是从标签本身(x、y、高度、宽度等)访问的,但我需要将其识别为对象的成员,以便操作其他属性。(如nodeNamevisible等)。

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2016-11-06 07:15:33

我不知道我是否真的明白你的要求,但试试这个。

代码语言:javascript
复制
@Override
public void handle(Event evt) {
   System.out.println(((Control)evt.getSource()).getId());
}

就你而言:

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40444338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档