首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未调用Paint方法

未调用Paint方法
EN

Stack Overflow用户
提问于 2019-04-11 01:48:44
回答 1查看 51关注 0票数 0

在前一帧中创建了一个实例后,我尝试在下一帧中创建背景图像,但结果是,我只是看到了调试的结果,并发现paint方法没有被调用。据我所知,paint方法是由JFrame类继承的,使用此逻辑,我已将其重写。正如我猜测的那样,发生逻辑错误的原因是因为我使用了事件处理程序并在EventHandlerClass中创建了实例。

代码语言:javascript
复制
    if(e.getActionCommand().equals(ButtonTo))       
        if(idString.equals("USER"))
                {                       
                    {
                        if("1234".equals(pwSt))     
                        {
                            System.out.println("Wellcome");
                            if(gs==null)
                            {
                                gs=new GameStart();
                            }
                        }
                    else
                    {
                         System.out.println("Confirm your password");
                    }               
                    }           
                }

这是一段代码,如果执行某个操作,它将生成一个实例(Gs)。这样做之后,我注意到这个实例已经被用来创建一个新的控制台框架。

代码语言:javascript
复制
class GameStart extends JFrame {
    private Image screenImage;
    private Graphics screenGraphic;
    private Image introBackgroundImage;
    private ImageIcon img;

    GameStart()
    {
        JFrame jf=new JFrame("Game Set");
        jf.setBounds(300, 300, 400, 200);
        jf.setLayout(new BorderLayout());

        JButton bt1=new JButton("Start");
        JButton bt2=new JButton("Exit");    
        JPanel panel1=new JPanel();
        panel1.add(bt1);panel1.add(bt2);

        setContentPane(panel1);

        jf.add(panel1, BorderLayout.SOUTH);
        bt1.addActionListener(new Choice());
        bt2.addActionListener(new Choice());
        jf.setVisible(true);    
        img=new ImageIcon("./Images/backGroundImage.jpg");
        System.out.println("1");
    }

    public void paint(Graphics g) {
        screenImage=createImage(200, 200);  
        screenGraphic=screenImage.getGraphics();
        screenDraw(screenGraphic);
        g.drawImage(screenImage, 0, 0, null);
        System.out.println("2");
    }

    public void screenDraw(Graphics g) 
    {   
        this.repaint();
        System.out.println("3");
    }

现在,通过制作一个框架和一些按钮,我希望显示所有表示结果的数字( 1,2,3),但只显示数字1。

EN

回答 1

Stack Overflow用户

发布于 2019-04-11 03:46:10

乍一看,你的代码中有一些错误:

  1. 您正在扩展JFrame,但没有向其添加任何额外功能,请参阅:Extends JFrame vs. creating it inside the program相反,应该针对JPanel的使用构建图形用户界面,并覆盖它们的paintComponent(...)方法,而不是paint(...)方法。
  2. 您正在打破绘制链:在paintComponent()中完成上述操作后,调用super.paintComponent(...)

也许还有其他人,但我现在很忙,不能测试你的代码,但上面的应该会帮助你解决问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55618570

复制
相关文章

相似问题

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