【发布时间】:2026-01-03 18:20:07
【问题描述】:
使用按钮,我试图显示我的数组列表的前一个元素,但它没有显示预期的结果,它只返回第一个元素,我想在表单中各自的字段中显示的数据
public class AutoForm extends javax.swing.JFrame {
ArrayList<Car> carsList;
int counter;
public AutoForm() {
initComponents();
carsList= new ArrayList<Car>();
counter = 0;
}
private void BtnSendActionPerformed(java.awt.event.ActionEvent evt) {
String id = txtId.getText();
String brand = JcomboBrand.getSelectedItem().toString();
int doors = Integer.parseInt(SpinnerDoors.getValue().toString());
Car objCar = new Car();
objCar.setId(id);
objCar.setBrand(brand);
objCar.setDoors(doors);
carsList.add(objCar);
counter++;
JOptionPane.showMessageDialog(this, "The car was added" + counter);
}
private void BtnPreviousActionPerformed(java.awt.event.ActionEvent evt) {
for (int i = 0; i <= carsList.size(); i++) {
Car carTemp = carsList.get(i);
if (counter > 0) {
counter--;
txtId.setText(carTemp.getId());
JcomboBrand.setSelectedItem(carTemp.getBrand());
SpinnerDoors.setValue(carTemp.getDoors());
} else {
JOptionPane.showMessageDialog(this, "There are no records");
}
break;
}
}
}
【问题讨论】:
-
方法名称不应以大写字符开头。变量名称不应以大写字符开头。通过以下示例学习 Java 标准,不要自己编造
-
计数器何时会大于 0?您将其初始化为 0,并有代码将其递减,但从不递增。我建议如果您想显示 ArrayList 中的先前值,则不需要循环。您只需减少“计数器”并根据新值从 ArrayList 中获取值。但在不了解应用程序如何工作的上下文的情况下,您需要自己解决细节问题。
-
添加新代码有什么意义,却忽略了解决问题的建议?坦率地说,代码仍然没有意义。如果您将两辆汽车添加到 ArrayList,然后单击“上一个”按钮两次,然后添加另一辆汽车,会发生什么情况。根据您的逻辑,只有一辆车,因为您将计数器增加 3 次并减少两次,但是 ArrayList 上有 3 辆汽车,因为我看不到您从 ArrayList 中删除汽车的位置。所以你对“以前”的定义对我来说没有任何意义。
-
@camickr 非常感谢你的建议,我是java新手
标签: java list swing arraylist jframe