我目前正在学习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.
}
}
});
答案 0 :(得分:1)
我创建了多个选项卡式面板,这些面板都包含有关每个团队的各种信息。
相反,你应该专注于创建一个可以显示团队统计数据的JPanel,而不是JTabbedPanes。如果需要,JPanel可以显示在JTabbedPane中。
我会使用CardLayout交换JPanel,然后使用Swing Timer进行交换。但是,如果您使用单个JPanel来显示统计信息,那么您甚至可以显示一个JPanel,只需更改其中显示的模型(团队统计信息),而不是交换JPanel。
至于什么放在你的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();
}
});