[英]How to change make tabbed panels change on their own every few seconds?
我目前正在學習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。 如果需要,然后可以在JTabbedPane中顯示JPanel。
我將使用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();
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.