我最近一直在做一些游戏编程,我正在使用CardLayout在不同的屏幕之间切换(主菜单,游戏屏幕,游戏结束,等等)
我的问题是,每次我切换屏幕时,前面的是不活动的,所以假设我从画布切换到主菜单,诸如pain()、painComponent()和游戏滴答之类的方法是否仍在被调用,或者画布是"inactive:=“
换句话说,当我切换时,我必须手动停止游戏,还是CardLayout已经这样做了?
发布于 2013-06-01 03:36:16
这很容易自己测试。只需在非活动面板的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);
}
}
}https://stackoverflow.com/questions/16864609
复制相似问题