Java 数组中的“下一步”和“上一步”按钮在数组中循环次数过多(每次按一次以上)
这两个按钮在一个数组中循环,当按下时,根据最大索引的大小增加到多次。我想这可能是因为(至少我有“我设置为最大索引”,但更改为当前索引会使按钮一起停止工作)Java 数组中的“下一步”和“上一步”按钮在数组中循环次数过多(每次按一次以上),java,arrays,Java,Arrays,这两个按钮在一个数组中循环,当按下时,根据最大索引的大小增加到多次。我想这可能是因为(至少我有“我设置为最大索引”,但更改为当前索引会使按钮一起停止工作) btnprev.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { for (int i = dataArrayMaxIndex; i >= 0; i-- ) {
btnprev.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
for (int i = dataArrayMaxIndex; i >= 0; i-- ) {
System.out.println("backwards");
dataArrayCurrentIndex = i;
websitetxt.setText(dataArray[i].getWebsitename());
usernametxt.setText(dataArray[i].getUsername());
passwordtxt.setText(dataArray[i].getPassword());
notestxt.setText(dataArray[i].getNotes());
}
}
});
btnnext.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
for (int i = 0; i<dataArrayMaxIndex; i++) {
System.out.println("foward");
dataArrayCurrentIndex = i;
websitetxt.setText(dataArray[i].getWebsitename());
usernametxt.setText(dataArray[i].getUsername());
passwordtxt.setText(dataArray[i].getPassword());
notestxt.setText(dataArray[i].getNotes());
}
}
});
btnprev.addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件e){
对于(int i=dataArrayMaxIndex;i>=0;i--){
System.out.println(“向后”);
dataArrayCurrentIndex=i;
setText(dataArray[i].getWebsitename());
usernametxt.setText(dataArray[i].getUsername());
passwordtxt.setText(dataArray[i].getPassword());
setText(dataArray[i].getNotes());
}
}
});
addActionListener(新的ActionListener(){
已执行的公共无效操作(操作事件e){
for(int i=0;i我认为for循环不属于此代码,因为每次按下按钮都会一直循环到结尾或开始。相反,只需增加或减少一个索引变量并使用该索引。我假设您将使用dataArrayCurrentIndex来实现此功能
i、 e
btnprev.addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件e){
dataArrayCurrentIndex--;
//若你们想做一个循环的数据循环
如果(dataArrayCurrentIndex<0){
dataArrayCurrentIndex=maxIndex-1;
}
System.out.println(“向后”);
setText(dataArray[dataArrayCurrentIndex].getWebsitename());
usernametxt.setText(dataArray[dataArrayCurrentIndex].getUsername());
passwordtxt.setText(dataArray[dataArrayCurrentIndex].getPassword());
setText(dataArray[dataArrayCurrentIndex].getNotes());
}
});
addActionListener(新的ActionListener(){
已执行的公共无效操作(操作事件e){
dataArrayCurrentIndex++;
//若你们想做一个循环的数据循环
如果(dataArrayCurrentIndex>=maxIndex){
dataArrayCurrentIndex=0;
}
//等等。。。
}
});
刚刚试过,效果很好,谢谢!我想我当时的做法不是最优雅的(或最有效的!)问题的解决办法。@Beid:我知道你是从哪里来的。你认为按下按钮会使数据向前循环,从而在作业中使用for循环,但事实并非如此。按下按钮时,数据应该向前或向后移动,这就是递增/递减操作将要做的做
btnprev.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dataArrayCurrentIndex--;
// if you want to do a cyclic loop of the data
if (dataArrayCurrentIndex < 0) {
dataArrayCurrentIndex= maxIndex - 1;
}
System.out.println("backwards");
websitetxt.setText(dataArray[dataArrayCurrentIndex].getWebsitename());
usernametxt.setText(dataArray[dataArrayCurrentIndex].getUsername());
passwordtxt.setText(dataArray[dataArrayCurrentIndex].getPassword());
notestxt.setText(dataArray[dataArrayCurrentIndex].getNotes());
}
});
btnnext.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dataArrayCurrentIndex++;
// if you want to do a cyclic loop of the data
if (dataArrayCurrentIndex >= maxIndex) {
dataArrayCurrentIndex = 0;
}
// etc...
}
});