gpt4 book ai didi

java - 从 JList 中删除元素的问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:30:38 26 4
gpt4 key购买 nike

我在从 JList 中删除元素时遇到问题,我的应用程序是客户端服务器应用程序,客户端有 JList( View )。服务器具有 vector 形式的 JList 的实际数据。当客户端发生某个 Action 时,服务器必须从 vector 中删除一个元素,然后更新客户端上的 View 。我试图在从服务器移除后获取 vector ,然后构造一个新的 JList,然后将其设置在 View 中,但没有发生更新。

有哪些可行的方法可以做到这一点?

注意:我这样使用 DefaultListModel:

DefaultListModel model=(DefaultListModel)myList.getModel();
model.removeElement(myElement);
myList.setModel(model);

但它在运行时给出了一个 ClassCastException,它说 javax.swing.JList cannot be cast to javax.swing.DefaultListModel

最佳答案

您可以通过在构造函数中传递 Vector 或使用 setListData 方法将元素添加到列表中,但这不是最好的方法。

您通常希望使用 ListModel 实现,例如 DefaultListModel。它定义了处理数据的方法(addElementremoveElement、...)。

您可以通过仅向服务器查询已删除的元素而不是获取所有数据来减少服务器和客户端之间交换的数据量。

更新:现在我看到您正在使用模型。 JList 模型的默认实现不是 DefaultListModel 类型。您可以在开始时实例化 JList 时在 JList 构造函数中设置模型。

DefaultListModel model = new DefaultListModel();
JList list = new JList(model);

不要再次实例化它,您只需要执行一次。然后,您可以使用您发布的代码,但您不必在删除元素后调用 setModel() 方法。

关于java - 从 JList 中删除元素的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14540668/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com