几个月后,我终于找到了解决办法。
我创建了 2 个 Button 实例:
Button option1 = new Button();
Button option2 = new Button();
option1.addListener(new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
System.out.println("Do something 1");
}
});
option2.addListener(new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
System.out.println("Do something 2");
}
});
然后,一个包含这两个按钮的 Button 的 SelectBox。
SelectBox<Button> selectBox = new SelectBox<>(skin);
selectBox.setItems(option1, option2);
在SelectBox中,我会有两种可能。
然后,我希望另一个按钮位于 SelectBox“结果”上方。我创建它并将它和 SelectBox 放在一个堆栈中。
Button menuButton = new Button();
Stack stack = new Stack();
stack.add(selectBox);
stack.add(menuButton);
图形上一切都很好,但这就是我在问题中提到的:当我单击列表中的选项时没有任何反应。
但这是新事物:
selectBox.getList().addListener(new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
for (EventListener eventListener: fileSelectBox.getSelected().getListeners()) {
if (eventListenerinstanceof ClickListener) {
((ClickListener) eventListener).clicked(event, x, y);
}
}
}
});
而且它正在工作。似乎当我们这样做时:
selectBox.getSelected().getClickListener().clicked(event, x, y);
它不会向手动添加的 ClickListener 发送事件...
希望对大家有所帮助!