在摆动计时器中使用 drawstring() 不会显示 drawstring()

问题描述

swing timer 方法中的 drawstring() 不起作用,但是 system.out.println() 在相​​同的方法中起作用。我记得我可以在 Paint(Graphics g) 方法之外成功使用拉绳,但现在它不起作用。什么可能导致此错误?任何帮助,将不胜感激。谢谢。

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Scanner;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.Timer;

public class Board extends JPanel {
    Timer timer;
    int count;
    @Override
    public void paint(Graphics g)
    {
        super.paintComponent(g);
        g.fillRect(30,30,640,640);//makes a black square
        for(int i=30;i<=510; i+=160)//adds white columns
        {
            for(int j=30; j<=510; j+=160)
            {
                g.clearRect(i,j,80,80);
            }
        }
        for(int i=110; i<=590; i+=160)//adds black columns
        {
            for(int j=110; j<=590; j+=160)
            {
                g.clearRect(i,80);
            }
        }
        g.setFont(new Font("Monospace",Font.BOLD,30));
        g.setColor(Color.WHITE);
        g.drawString("a",85,660);
        g.drawString("c",245,660);
        g.drawString("e",405,660);
        g.drawString("g",565,660);
        g.drawString("7",35,140);
        g.drawString("5",300);
        g.drawString("3",460);
        g.drawString("1",620);
        
        g.setColor(Color.BLACK);
        g.drawString("b",165,660);
        g.drawString("d",325,660);
        g.drawString("f",485,660);
        g.drawString("h",645,660);
        g.drawString("8",60);
        g.drawString("6",220);
        g.drawString("4",380);
        g.drawString("2",540);
        startTimer(3,g);
    }
    public void showX(Graphics g)
    {
        g.setFont(new Font("wrongFont",200)); 
        g.setColor(Color.RED);
        g.drawString("X",540);
    }
    public void boardImage()
    {
        JFrame frame=new JFrame();
        frame.setSize(600,600);
        frame.getContentPane().add(new Board());
        frame.setLocationRelativeto(null);
        frame.setBackground(Color.LIGHT_GRAY);
        frame.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
        CoordinateGame game=new CoordinateGame();
        frame.addMouseListener(new MouseAdapter() 
        {
            public void mouseClicked(MouseEvent e) 
            {
                int x=e.getX();
                int y=e.getY();
                    
            }
        }); 
    }
    public void startTimer(int seconds,Graphics g)
    {
        ActionListener action=new ActionListener()
        {
            public void actionPerformed(ActionEvent e) 
            {
                if(count==0)
                {
                    timer.stop();
                }
                else
                {
                    
                    count--;
                    System.out.println("bruh");
                    g.drawString("bruh",300,300);
                }
            }
            
        };
        timer=new Timer(1000,action);
        timer.setinitialDelay(0);
        timer.start();
        count=seconds;
    }
    
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)