java - 使用 MVC 将 ArrayList 转换为 JList

标签 java model-view-controller arraylist jlist

我有 3 节课。
ImpApp模型:

/* String array for saving members in the friendlist*/
public ArrayList<String> friendList = new ArrayList(10);

/**
 * Method for retrieving elements (added friends) in the array for use in 
 * GUI.
 * @return the elements in the ArrayList
 */
public ArrayList friendList() {
    //method filling the array with 1 testing record
    friendList.add(1, "petr");
    return friendList;
}

我正在查看 appPanel 类(由 NetBeans GUI Builder 生成):

        Users.setModel(new javax.swing.AbstractListModel() {
        String[] strings = {"User1", "User2", "User3", "User4", "User5"};

        @Override
        public int getSize() {
            return strings.length;
        }

        @Override
        public Object getElementAt(int i) {
            return strings[i];
        }
    });
    /**
 * Method for setting users to display in GUI (variable JList Users)
 * @param user parameter for supplying JList
 */
public void setUser(JList user){
    this.Users = user;
}

最后我控制了 ImpAppContorller 类:

private final GuiPanel appPanel;
private final ImpAppModel impAppModel;
/**
 * Main constructor method, creates variables for saving links on Data and 
 * GUI.
 * @param appPanel Ensures communication between GUI panel and controller.
 * @param impAppModel Ensures communication between Model and controller.
 */
public ImpAppController(GuiPanel appPanel, ImpAppModel impAppModel) {

    this.appPanel = appPanel;
    this.impAppModel = impAppModel;

    appPanel.setUser(impAppModel.friendList.toArray());
}

我有一个错误:不兼容的类型:Object[] 无法转换为 Jlist。
问题是(是的,我做了研究,我发现的解决方案不适合在 MVC 模式中使用)如何实现 Controller (或修改模型/ View )以使用 Controller 类为 JList 提供 arrayList 中的元素,同时维护 MVC 模式。
/编辑:我严重怀疑我的问题是由 GUI 类中的 setUser 方法引起的,但问题仍然相同。

最佳答案

JList 包含 ListModel 形式的数据。 。使用 setModel() 定义 Jlist 的数据成员(member)。

将数组转换为 Model 对象显然没有意义,但有一个方便的类 DefaultListModel,您可以使用它将数组导入到模型中。因此,在您的 appPanel 类中,您可以添加

public void setUserData(Object [] data){
    DefaultListModel model = new DefaultListModel();
    model.copyInto(data);
    Users.setModel(model); // Users must exist
}

关于java - 使用 MVC 将 ArrayList 转换为 JList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36006082/

相关文章:

c# - 来自后台任务的进度报告

java - 使用 arrayList 中的值重用输入 String[]

java - 如何从整个Ontology中提取特定个体的同义词?

java - vaadin javascript

java - XJC 生成的类存在问题

c# - 如何在存储库模式中加载相关数据

java - MVC Spring Java - 显示作为类中字段存储的图片

javascript - 如何使用 hibernate、spring mvc 和 angular js 从后端检索图像和其他数据并显示在屏幕上?

java - 多个arrayList之间的元素交集

Java-根据现有对象列表从流中获取新对象列表