数组中的下一个和上一个按钮在每次按下数组时循环太多次(多次)



这两个按钮在一个数组中循环,当按下时会增加很多次,这取决于最大索引是什么。我想这可能是因为(至少向后我有"I set as maximum index",但更改为当前索引会停止按钮的工作。

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

我不确定如何解决这个问题,可以寻求一些帮助和建议。我觉得不给自己答案,而是有一些建设性的批评来引导自己去做会对自己更有帮助,也就是说,如果你喜欢的话,可以随意发布一个直截了当、有效的答案。

我认为for循环不属于此代码,因为每次按下按钮都会一直循环到最后或开始。相反,只需增加或减少一个索引变量并使用该索引即可。我假设您将使用dataArrayCurrentIndex来实现此功能。

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

最新更新