2013-05-31 67 views
0

我最近做了一些遊戲編程和我使用的是CardLayout不同屏幕之間切換(主菜單,遊戲屏幕,遊戲結束,等...)的Java CardLayout事件

我的問題是,每次我切換屏幕是否會變成「無效」,因此可以說我從畫布切換到主菜單,方法如pain(),painComponent(),還有遊戲滴答還在被調用,或者Canvas「非活動狀態: =「

換句話說,當我切換時我必須手動停止遊戲,還是CardLayout已經做到了?

回答

0

這很容易測試你自己。只需在非活動面板的paintComponent方法中添加一條日誌記錄語句,並在卡未顯示時查看它是否打印。

此代碼表明,這只是第一個面板上調用的paintComponent:

package com.sandbox; 

import javax.swing.*; 
import java.awt.*; 

public class SwingSandbox { 

    public static void main(String[] args) { 

     JFrame frame = buildFrame(); 
     JPanel cards = new JPanel(new CardLayout()); 

     cards.add(new JPanelThatPrints("1")); 
     cards.add(new JPanelThatPrints("2")); 
     cards.add(new JPanelThatPrints("3")); 

     frame.add(cards); 
    } 


    private static JFrame buildFrame() { 
     JFrame frame = new JFrame(); 
     frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
     frame.setSize(200, 200); 
     frame.setVisible(true); 
     return frame; 
    } 


    private static class JPanelThatPrints extends JPanel { 

     private String message; 

     public JPanelThatPrints(String message) { 
      this.message = message; 
     } 

     @Override 
     protected void paintComponent(Graphics g) { 
      super.paintComponent(g); 
      System.out.println(message); 
     } 
    } 
} 
+0

謝謝:)這回答我的問題,不知道爲什麼我沒有想到在這之前的:) – user2407444