一个一个显示Arraylist的元素
Displaying elements of Arraylist one by one
每次我单击下一步按钮时,它应该显示我的数组列表的下一个元素。这不是正在发生的事情。它停留在第一个元素。
JButton btnNext = new JButton("Next");
btnNext.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
ArrayList numbers = new ArrayList();
numbers.add("A");
numbers.add("B");
numbers.add("C");
ListIterator litr = numbers.listIterator();
if (litr.hasNext()) {
System.out.print(litr.next());
}
}
});
btnNext.setBounds(71, 167, 89, 23);
contentPane.add(btnNext);
获得输出:AAA
预期输出:ABC(3 次点击)
每次点击都会创建一个新的 ArrayList
,向其中添加 3 个元素,创建迭代器并通过迭代器从列表中获取第一个元素。
因此你总是得到相同的输出。
为了在每次点击时获得不同的元素,您应该将 ArrayList
和迭代器保留为 class 的成员。
例如:
public class YourClass
{
private List<String> numbers;
private ListIterator<String> litr;
public YourClass () {
numbers = new ArrayList<>();
numbers.add("A");
numbers.add("B");
numbers.add("C");
litr = numbers.listIterator();
}
...
btnNext.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
if (litr.hasNext()) {
System.out.print(litr.next());
}
}
});
...
}
请注意,点击按钮 3 次后,它将停止产生输出,因为迭代器将到达列表的末尾。
每次执行 actionPerformed
方法时都重新创建列表和迭代器。但是,您必须重用相同的迭代器实例才能获得所需的结果。你可以例如将迭代器存储为 ActionListener
:
中的字段
btnNext.addActionListener(new ActionListener() {
private final ListIterator litr;
{
ArrayList numbers = new ArrayList();
numbers.add("A");
numbers.add("B");
numbers.add("C");
this.litr = numbers.listIterator();
}
public void actionPerformed(ActionEvent arg0) {
if (litr.hasNext()) {
System.out.print(litr.next());
}
}
});
每次我单击下一步按钮时,它应该显示我的数组列表的下一个元素。这不是正在发生的事情。它停留在第一个元素。
JButton btnNext = new JButton("Next");
btnNext.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
ArrayList numbers = new ArrayList();
numbers.add("A");
numbers.add("B");
numbers.add("C");
ListIterator litr = numbers.listIterator();
if (litr.hasNext()) {
System.out.print(litr.next());
}
}
});
btnNext.setBounds(71, 167, 89, 23);
contentPane.add(btnNext);
获得输出:AAA 预期输出:ABC(3 次点击)
每次点击都会创建一个新的 ArrayList
,向其中添加 3 个元素,创建迭代器并通过迭代器从列表中获取第一个元素。
因此你总是得到相同的输出。
为了在每次点击时获得不同的元素,您应该将 ArrayList
和迭代器保留为 class 的成员。
例如:
public class YourClass
{
private List<String> numbers;
private ListIterator<String> litr;
public YourClass () {
numbers = new ArrayList<>();
numbers.add("A");
numbers.add("B");
numbers.add("C");
litr = numbers.listIterator();
}
...
btnNext.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
if (litr.hasNext()) {
System.out.print(litr.next());
}
}
});
...
}
请注意,点击按钮 3 次后,它将停止产生输出,因为迭代器将到达列表的末尾。
每次执行 actionPerformed
方法时都重新创建列表和迭代器。但是,您必须重用相同的迭代器实例才能获得所需的结果。你可以例如将迭代器存储为 ActionListener
:
btnNext.addActionListener(new ActionListener() {
private final ListIterator litr;
{
ArrayList numbers = new ArrayList();
numbers.add("A");
numbers.add("B");
numbers.add("C");
this.litr = numbers.listIterator();
}
public void actionPerformed(ActionEvent arg0) {
if (litr.hasNext()) {
System.out.print(litr.next());
}
}
});