Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.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 在JList中显示带有的ArrayList(Swing)_Java_Arrays_Swing_Arraylist_Jframe - Fatal编程技术网

Java 在JList中显示带有的ArrayList(Swing)

Java 在JList中显示带有的ArrayList(Swing),java,arrays,swing,arraylist,jframe,Java,Arrays,Swing,Arraylist,Jframe,当我试图用ArrayList显示JLList时,出现了一个问题。我使用动作侦听器来执行所有这些: ContactArray contactObject = new ContactArray(); ContactArray类: import java.util.ArrayList; import java.util.List; import java.util.Objects; public class ContactArray { private List<String>

当我试图用ArrayList显示JLList时,出现了一个问题。我使用动作侦听器来执行所有这些:

ContactArray contactObject = new ContactArray();
ContactArray类:

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

public class ContactArray {

    private List<String> names;

    public ContactArray() {
        this.names = new ArrayList<>();
    }

    //add a name to list
    public void addName(String name) {
        if (!Objects.nonNull(names)) {
            this.names = new ArrayList<>();
        }
        this.names.add(name);
    }

    //get the name attribute
    public List<String> getNames() {
        if (!Objects.nonNull(names)) {
            this.names = new ArrayList<>();
        }
        return this.names;
    }

}
import java.util.ArrayList;
导入java.util.List;
导入java.util.Objects;
公共类ContactArray{
私人名单名称;
公共联系人数组(){
this.names=new ArrayList();
}
//在列表中添加一个名称
public void addName(字符串名称){
如果(!Objects.nonNull(名称)){
this.names=new ArrayList();
}
此.names.add(name);
}
//获取name属性
公共列表getNames(){
如果(!Objects.nonNull(名称)){
this.names=new ArrayList();
}
返回此名称;
}
}
我已经设法用
contactObject.getNames().forEach(System.out::println)将全名打印到控制台上我把它放在注释中,但似乎无法将它们添加到JList中。通常,当我按下viewContactButton时,它会显示它

另外,我正在使用IntelliJ IDEA的Swing GUI表单

谢谢你的帮助:)

我已设法将全名打印到控制台

你把代码放错地方了。当您实际使用列表创建JList时,应放置代码。(也就是说,您可能在某个地方有代码,在创建列表后的某个时间和使用列表之前意外删除了该列表)

当我试图用ArrayList显示JList时出现问题

那么问题是ArrayList还是您也尝试在JList中硬编码数据?为了解决问题,你需要知道真正的问题是什么。始终首先尝试显示硬编码数据,而不是动态数据

add(new JScrollPane(contactList));
我想真正的问题是上述说法

无论何时向可见框架添加组件,基本代码应为:

add(...);
revalidate();
repaint();

您需要调用面板的布局管理器。否则组件的大小为0,因此无需绘制任何内容。

是否将您的
JList
contactList
)添加到框架的某个位置?如果是这样,那么在添加联系人时尽量不要创建新列表。但是清除现有ListModel中的所有元素
add(...);
revalidate();
repaint();