Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.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 过帐到阵列列表_Java_Swing - Fatal编程技术网

Java 过帐到阵列列表

Java 过帐到阵列列表,java,swing,Java,Swing,我希望将文本字段中输入的值传递到数组列表中,尽管我似乎无法做到这一点。我可以在使用时查看控制台中输入的详细信息 System.out.println(houses.get(1).getHouseNumber()) 但这并没有在我的代码中将新输入的值发布到arraylist中,我不明白为什么 ArrayList和ActionListener代码 final ArrayList<House> houses = new ArrayList<House>();

我希望将文本字段中输入的值传递到数组列表中,尽管我似乎无法做到这一点。我可以在使用时查看控制台中输入的详细信息

       System.out.println(houses.get(1).getHouseNumber())
但这并没有在我的代码中将新输入的值发布到arraylist中,我不明白为什么

ArrayList和ActionListener代码

final ArrayList<House> houses = new ArrayList<House>();
        houses.add(new House());
 button.addActionListener(new ActionListener()
 {
        public void actionPerformed(ActionEvent e) {
        House house = new House();
        house.setHouseNumber(houseNumber.getText());
        house.setStreetName(streetName.getText());
        house.setTown(town.getText());
        house.setPostcode(postcode.getText());
        houses.add(house);
            System.out.println(houses.get(1).getHouseNumber());
            System.out.println(houses.get(1).getStreetName());
            System.out.println(houses.get(1).getTown());
            System.out.println(houses.get(1).getPostcode());
       }
   });
房屋类别代码

class House {
    private String houseNumber;
private String streetName;
private String town;
private String postcode;

public String getHouseNumber() {
    return houseNumber;
}
public void setHouseNumber(String houseNumber) {
    this.houseNumber = houseNumber;
}
不需要这个变量,去掉它

JTextField HouseNumber1; 
这不符合正确的java命名约定。变量名不以大写字符开头。可变名称应为:

JTextField houseNumber; 
现在,在ActionListener中,您可以直接从文本字段获取文本:

house.setHouseNumber( houseNumber.getText() );   
编辑:

使用它打印阵列,并显示
[demo2]。House@e2eec8,演示2。House@aa9835]

House@e2eec8
House@aa9835
分别指
阵列列表中的第一和第二个房子。请尝试以下方法:

System.out.println(houses.get(0).getHouseNumber());
增编:

我无法在我的代码中查看
ArrayList
中的详细信息

您可以在
House
中覆盖
toString()
;这样你就可以做到:

System.out.println(houses.get(0));
增编:

这不会将新输入的值发布到
ArrayList

对,这总是得到第二个条目,从0开始。以下内容始终将最后一个发送到
add()

附录:您可以像这样在
房屋中循环

for (House h : houses) {
    System.out.print(h.getHouseNumber());
    System.out.print(h.getStreetName());
    ...
}

根据您的代码,您无法从
JtextField
获取值
Submit
是什么类型的?@Darren:建议不要将大写字母作为变量名的第一个字母。您从何处获得了houseNumber、town……以及所有这些信息?@Harry Joy:谢谢,我已将变量submit改为小写,并添加了显示houseNumber来源的附加代码。您可能希望确保与您的侦听器相关的事件确实被触发。通过了解什么是“提交”,也许我们可以推断出更多。但是这里的错误并不明显。@edalorzo:我该如何确保动作侦听器被触发?submit只是我的jbutton,它应该将细节发布到ArrayList中。感谢这一点,尽管还没有发布任何内容,但有必要在类中声明“implements actionListener”吗?当我这样做的时候,我被告知要添加抽象方法,但不应该有抽象方法,因为我有所有的AciotNLiListener组件:一般来说,您不实现ActionListener接口,因为您的类中可能有多个按钮是ActionEvents的监听器。一个常见的解决方案是为ActionListener使用一个无注释的内部类。查看编辑。除非您以其他方式将结果放在那里。您可以更新您的问题以显示您的最新代码。只要尝试了这个方法,它就工作了,门牌号会打印在控制台中,只是为了澄清一下,这是否意味着详细信息现在已传递到我的阵列中?只是我无法在我上面详细阐述的代码中看到Arraylist中的细节。你可以直接打印house.get…
,但我认为你验证它是否被添加是正确的。您还可以检查由
house.add(house)
返回的结果。虽然这确实显示了上次输入的详细信息,但它们似乎仍然没有保存到数组列表中,这正是我需要它们做的,当我尝试打印数组列表以查看其所有内容时,仍然会显示[demo2]。House@12d03f9]而不是实际的细节。如果详细信息出现在我的代码行下;“final ArrayList houses=new ArrayList();”就像在代码中手动输入一样?符号
House@12d03f9
是对整个
房屋
实例的引用。您可能希望在数组中循环以查看它们,如上图所示。你在用什么教科书?
System.out.println(houses.get(0).getHouseNumber());
System.out.println(houses.get(0));
System.out.println(houses.get(1).getHouseNumber());
System.out.println(houses.get(houses.size() - 1).getHouseNumber());
for (House h : houses) {
    System.out.print(h.getHouseNumber());
    System.out.print(h.getStreetName());
    ...
}