相关疑难解决方法(0)

不移动鼠标光标时Java动画会断断续续

我有一个非常简单的动画,一个大字体的文本连续(逐个像素)向左移动.首先将文本转换为图像,然后启动计时器任务,重复(每10-20毫秒)将图像的x坐标递减1,然后执行重绘().

该程序在某些系统上显示出奇怪的行为.在我的电脑上使用nVidia卡,它运行顺畅.在我的Vaio笔记本电脑上,在BeagleBoneBlack和朋友的Mac上,它会严重破坏.它似乎暂停一段时间,然后跳到左边大约10个像素,再次暂停,依此类推.

我是什么树桩在这些系统上动画的事实,只有当你不触摸鼠标口吃.只要您在窗口内移动鼠标光标,无论速度有多慢,或者拖动窗口本身,动画都会非常流畅!

任何人都能解释一下吗?这是程序:

import java.awt.*;
import java.awt.image.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.util.*;

class Textimg extends JComponent
{
    String      str;
    Font        font;
    int         x = 0;
    final int   ytext = 136;
    Image       img;

    public Textimg(String s)
    {
        str = s;
        font = new Font("Noserif", Font.PLAIN, 96);
        setLayout(null);
    }

    protected void paintComponent(Graphics g)
    {
        if (img == null)
        {
            img = createImage(4800, 272);
            Graphics gr = img.getGraphics();

            gr.setFont(font);
            gr.setColor(Color.BLACK);
            gr.fillRect(0, 0, 4800, 272);
            gr.setColor(new Color(135, 175, …
Run Code Online (Sandbox Code Playgroud)

java animation swing

16
推荐指数
2
解决办法
2333
查看次数

使用Canvas在Java中绘图

我想用Java的Canvas绘制,但是不能让它工作,因为我不知道我在做什么.这是我的简单代码:

import javax.swing.JFrame;
import java.awt.Canvas;
import java.awt.Graphics;
import java.awt.Color;

public class Program
{
    public static void main(String[] args)
    {
        JFrame frmMain = new JFrame();
        frmMain.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frmMain.setSize(400, 400);

        Canvas cnvs = new Canvas();
        cnvs.setSize(400, 400);

        frmMain.add(cnvs);
        frmMain.setVisible(true);

        Graphics g = cnvs.getGraphics();
        g.setColor(new Color(255, 0, 0));
        g.drawString("Hello", 200, 200);
    }
}
Run Code Online (Sandbox Code Playgroud)

窗口上没有任何内容.

我错误地认为Canvas是纸,而Graphics是我的铅笔吗?它是如何工作的?

java graphics swing canvas awt

14
推荐指数
2
解决办法
12万
查看次数

标签 统计

java ×2

swing ×2

animation ×1

awt ×1

canvas ×1

graphics ×1