What I am trying to achieve is have one JLabel to display multiple items from a List.
I have defined the list as below but when I test the code
In order to locate next string from collection, you need somehow know about current item.
One approach is to store index (or iterator) in a field:
List strings=<...>
// 1. store index
int sentenceIndex = 0;
// 2. store iterator. You could get ConcurrentModificationException if change list and then use iterator.
Iterator iterator = strings.getIterator();
private void buttonpressActionPerformed() {
// 1. use index.
if (sentenceIndex < strings.size()-1) { // avoid IndexOutOfBoundException
String nextSentence = strings.get(sentenceIndex++);
}
// 2. use iterator
if (iterator.hasNext()) {
String nextSentence = iterator.next();
}
But in fact you don't need to store something:
// 3. calculate current index
String currentSentence = jLabel1.getText();
int currentIndex = strings.indexOf(currentSentence);
int nextIndex = incrementIndex(currentIndex);
String nextSentence = strings.get(nextIndex );
Note that I suggest new method incrementIndex. In it you could add not only lenght check but also jumping from last element to the first or just random selecting.
Each method has pro and contras:
index require boundary checks
iterator limits list updating
index calcucaliton also require boundary checks and label1 should have correct initial value
I would prefer storing index but it's your choice