Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在LibGDX场景2d中,更改选择框的项目后,它不再具有默认侦听器_Java_User Interface_Libgdx_Widget_Scene2d - Fatal编程技术网

Java 在LibGDX场景2d中,更改选择框的项目后,它不再具有默认侦听器

Java 在LibGDX场景2d中,更改选择框的项目后,它不再具有默认侦听器,java,user-interface,libgdx,widget,scene2d,Java,User Interface,Libgdx,Widget,Scene2d,我不认为我的问题是很难解决,但我已经寻找了一段时间,不能解决它 我有两个scene2dSelectBoxwidgets,一个在另一个之上,在桌子上,在舞台上。让我们把它们称为A和B。A中选择的内容决定了B中显示的列表。我在A上使用ChangeListener实现了这一点,所有这些都可以正常工作(这不是问题) 然而,我的列表A变得非常长(500多个项目),因此我想在上面添加一个TextField,它将搜索并匹配字符串,用一个较短的列表替换旧的列表A,从而更容易找到您要找的内容。这很好,我在text

我不认为我的问题是很难解决,但我已经寻找了一段时间,不能解决它

我有两个scene2d
SelectBox
widgets,一个在另一个之上,在桌子上,在舞台上。让我们把它们称为A和B。A中选择的内容决定了B中显示的列表。我在A上使用
ChangeListener
实现了这一点,所有这些都可以正常工作(这不是问题)

然而,我的列表A变得非常长(500多个项目),因此我想在上面添加一个
TextField
,它将搜索并匹配字符串,用一个较短的列表替换旧的列表A,从而更容易找到您要找的内容。这很好,我在textfield上使用
ChangeListener
获取字符串,使用for循环将其与字符串的主列表进行比较,然后使用
aList.setItems()
将调整后的字符串添加到
选择框
。列表显示(无需单击,因此我在
TextField
ChangeListener
中使用
aList.showList();
),我认为这就是问题发生的地方-不是单击,而是从别处调用
showList()
。假设我改变主意,想从菜单中选择一个不同的项目,它将不再在单击时下拉菜单。但是,如果我更改搜索栏中的文本,它会显示列表。当列表显示时,我可以单击一个项目,它会正常隐藏

这似乎有点让人困惑,所以下面是代码(为了清晰起见进行了编辑,因此如果缺少什么,请告诉我)

点击被识别,只是列表不显示。在我看来,调用
showList()
并同时更改列表是一个问题

非常感谢您的帮助,如果您需要更多代码或任何其他信息,请告诉我


谢谢

将选择框添加到表中时,将其设置为固定大小,如

table.add(selectBox).width(someValue);

另外,在检查代码之后,我建议您删除

    aSelect.clearItems();
    aSelect.hideList();
并将ArrayList设置为libgdx Array,这将使事情变得更简单,在使用“:”进行迭代时不会导致分配,并且在设置选择框的项目时也不需要.toArray()。您还可以使用SelectBox设置SelectBox类型,并且可以在table.add(something).row()的同一行中添加一行


更改selectbox单元格的大小后,您的代码在我这边运行得很好。

我认为是clearItems部分导致了问题,我只是假设在更新之前必须清除列表。我删除了它,一切都很好,我已经有了一个宽度,只是忘了包含代码。谢谢你的帮助。同样感谢您提供关于libgdx数组类的提示,我甚至不知道有一个。是的,很高兴能提供帮助,libgdx是一个巨大的框架,我使用它大约4年了,仍然有很多东西需要学习
table.add(selectBox).width(someValue);
table.add(selectBox).growX();
    aSelect.clearItems();
    aSelect.hideList();