簡體   English   中英

如何更改以使選項卡式面板每隔幾秒鍾更改一次?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM