首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java CardLayout事件

Java CardLayout事件
EN

Stack Overflow用户
提问于 2013-06-01 03:34:09
回答 1查看 300关注 0票数 0

我最近一直在做一些游戏编程,我正在使用CardLayout在不同的屏幕之间切换(主菜单,游戏屏幕,游戏结束,等等)

我的问题是,每次我切换屏幕时,前面的是不活动的,所以假设我从画布切换到主菜单,诸如pain()、painComponent()和游戏滴答之类的方法是否仍在被调用,或者画布是"inactive:=“

换句话说,当我切换时,我必须手动停止游戏,还是CardLayout已经这样做了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-01 03:36:16

这很容易自己测试。只需在非活动面板的paintComponent方法中放置一条日志语句,并查看当卡未显示时是否会打印出来。

这段代码显示它只在第一个面板上调用paintComponent:

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16864609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档