Java 在JList中显示带有的ArrayList(Swing)
当我试图用ArrayList显示JLList时,出现了一个问题。我使用动作侦听器来执行所有这些: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>
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();