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...
    }
});