我遇到Java Arraylist的问题:当我点击上一个按钮时,它不会获得最后一个元素的索引。
注意:InfoStudent是一个单独的类,包含所有学生信息,如ID,姓名和电子邮件;和arraylist学生包含新学生的信息。我不确定我的问题是否是像student.get这样的索引(从索引开始0开始获取当前学生的id和减1)。我的截图:
我的代码:
JButton btnFirst = new JButton("First");
btnFirst.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
textFieldId.setText(Integer.toString(student.get(0).getId()));
textFieldName.setText(student.get(0).getName());
txtEmailbox.setText(student.get(0).getEmail());
}
});
btnFirst.setBounds(10, 215, 89, 22);
frame.getContentPane().add(btnFirst);
JButton btnPrev = new JButton("Prev");
btnPrev.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
current = Integer.parseInt(textFieldId.getText());
if(current== student.size()){
current= 0;
}
else {
current = current-1;
}
textFieldId.setText(Integer.toString(student.get(current).getId()));
textFieldName.setText(student.get(current).getName());
txtEmailbox.setText(student.get(current).getEmail());
//student.get(current).getId() is not working
}
});
btnPrev.setBounds(122, 215, 89, 22);
frame.getContentPane().add(btnPrev);
JButton btnNext = new JButton("Next");
btnNext.setBounds(230, 215, 89, 23);
frame.getContentPane().add(btnNext);
JButton btnLast = new JButton("Last");
btnLast.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
textFieldId.setText(Integer.toString(student.get(student.size()-1).getId()));
textFieldName.setText(student.get(student.size()-1).getName());
txtEmailbox.setText(student.get(student.size()-1).getEmail());
}
});
btnLast.setBounds(329, 215, 89, 23);
frame.getContentPane().add(btnLast);
}
答案 0 :(得分:1)
当前变量是数组中的学生ID和而不是索引 要解决它,最好的解决方案是添加在学生数组中保存当前索引的变量
答案 1 :(得分:0)
首先,不要这样做,btnFirst.setBounds(10, 215, 89, 22);
。您应该避免使用null布局并使用setBounds(...)
进行组件放置,因为这会使GUI非常不灵活,虽然它们在一个平台上看起来不错但在大多数其他平台或屏幕分辨率上看起来很糟糕且很难更新并保持。
接下来,将当前索引存储在字段中,只需根据需要更改其值。
例如,在下一个:
currentIndex++; // increment it
currentIndex %= myCollection.size(); // mod it so that you don't go out of bounds
以及之前的内容,如:
currentIndex--;
currentIndex += myCollection.size(); // mod doesn't work well w/ neg numbers
currentIndex %= myCollection.size();
答案 2 :(得分:0)
更改
if(current== student.size()){
current= 0;
}
else {
current = current-1;
}
要
if(current < 0 || current >= student.size()){
current = 0;
}
else {
//Do Not Change the value since it is valid
}
您可以使用字段存储当前索引值