В настоящее время я изучаю Swing и пытаюсь создать простую программу, которая хранит информацию о различных спортивных командах.
Я создал несколько панелей с вкладками, которые содержат всю информацию о каждой команде. Я хотел бы иметь кнопку, которая при нажатии показывает каждую панель с вкладками каждые 10 секунд или около того - вид эффекта слайд-шоу.
Я прочитал о прослушивании действий, но не потратил на них много времени, так как у меня возникли проблемы с реализацией этого. Я был бы очень благодарен, если бы кто-нибудь мог помочь мне или просто дать мне толчок в правильном направлении. Я опубликовал фрагмент кода, который я попытался, но я не понимаю, что на самом деле поставить внутри цикла, чтобы достичь этого.
slides.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent actionEvent){
for(int i = 0; i<arrayList.size(); i++)
{
//code that changes the tabbed panels every few seconds.
}
}
});
Я создал несколько панелей с вкладками, которые содержат различную информацию о каждой команде.
Скорее вы должны сосредоточиться на создании JPanel, который может отображать статистику команды, а не столько JTabbedPanes. Затем JPanel может отображаться в JTabbedPane, если это необходимо.
Я бы использовал CardLayout для обмена JPanels, а затем Swing Timer, чтобы выполнить обмен. Однако, если вы используете один JPanel для отображения статистики, вы можете даже отобразить один JPanel и просто изменить отображаемую в нем модель (информация о статистике группы), а не свопировать JPanels.
Что касается того, что добавить в свой ActionListener, это будет не цикл for, а скорее Swing Timer, и вы можете прочитать об этом здесь: Swing Timer Tutorial.
например,
slides.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent actionEvent){
int timerDelay = 10 * 1000; // 10 seconds
new Timer(timerDelay, new ActionListener() {
private int count = 0;
public void actionPerformed(ActionEvent evt){
if (count < maxCount) {
// code to show the team data for the count index
count++;
} else {
((Timer) evt.getSource()).stop(); // stop timer
}
}
}).start();
}
});