我正在做一个JavaFX表单程序。表单数据使用页面的ArrayList (节点的ArrayLists )来处理,这些页面是包含GUI元素(label)及其数据成员的对象。
就像这样:
主声明
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中的ArrayList对象的索引,以便为currentNode分配该值。
现在一切都很好,但是访问索引是个麻烦。数据是从标签本身(x、y、高度、宽度等)访问的,但我需要将其识别为对象的成员,以便操作其他属性。(如nodeName、visible等)。
有什么想法吗?
发布于 2016-11-06 07:15:33
我不知道我是否真的明白你的要求,但试试这个。
@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());
}
});https://stackoverflow.com/questions/40444338
复制相似问题