Search code examples
javaarraysswingpagination

Page through an array


Test[] array = new Test[3];

array[0] = new RowBoat("Wood", "Oars", 10);
array[1] = new PowerBoat("Fiberglass", "Outboard", 35);
array[2] = new SailBoat("Composite", "Sail", 40);

I have the above array and I need to display the results to a Swing GUI with a next button that will display the first index values, and when the next button is clicked it will display the next index values and so on.

for (int i=0;; i++) {
    boatMaterialTextField.setText(array[i].getBoatMaterial());
    boatPropulsionField.setText(array[i].getBoatPropulstion());
}

I have the above code working, and of course it displays the last item in the array.

How would I display the first index in the array and when the user clicks next display the next item in the array as well as go to the previous index when a back button is clicked?

Simply put, I need to page through each index when a button is clicked.


Solution

  • You do not need a loop. When the frame first loads you can simply display the first item in the array. You can then create a next button.

     JButton nextBtn;
     int currentIndex;
    
     ...
    
     currentIndex = 0;
     //display the first item in the array.
     boatMaterialTextField.setText(array[currentIndex].getBoatMaterial());
     boatPropulsionField.setText(array[currentIndex].getBoatPropulstion());
    
     nextBtn = new JButton("Next>>");
     nextBtn.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e){
           if(currentIndex < array.length){
            boatMaterialTextField.setText(array[++currentIndex].getBoatMaterial());
            boatPropulsionField.setText(array[currentIndex].getBoatPropulstion());     
           }
        }
     });
    

    You can add another button for previous that simply decrements the currentIndex each time ensuring to check that it never becomes negative.