java graphics 动画_Java Graphics制作的动画,一运行就抛类型转换异常,代码如下,但是从界面上看不出哪有错误,求高手帮忙!...

在尝试使用Java Graphics创建动画时,遇到`AWT-EventQueue-0`线程中`ClassCastException`,具体为`sun.java2d.windows.GDIWindowSurfaceData`无法转换为`sun.java2d.d3d.D3DSurfaceData`。问题出现在将Graphics对象强制转换为Graphics2D时。代码示例中展示了如何创建一个包含按钮和动画的窗口,但当启动动画时抛出异常。
摘要由CSDN通过智能技术生成

Exceptioninthread"AWT-EventQueue-0"java.lang.ClassCastException:sun.java2d.windows.GDIWindowSurfaceDatacannotbecasttosun.java2d.d3d.D3DSurfaceData//代码如下:importjava.a...

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: sun.java2d.

windows.GDIWindowSurfaceData cannot be cast to sun.java2d.d3d.D3DSurfaceData

//代码如下:

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class Graphics05 extends JFrame implements ActionListener{

int x = 160;

int y = 150;

Timer t = new Timer(50,this);//设置动画时间

public Graphics05(String title){

super(title);

JButton jb = new JButton("开始");

add(jb,BorderLayout.NORTH);

jb.addActionListener(this);

setSize(640,480);

setLocation(100,50);

setResizable(false);

setVisible(true);

addWindowListener(new WindowAdapter(){

@Override

public void windowClosing(WindowEvent we){

System.exit(1);

}

});

}

public void actionPerformed(ActionEvent ae){

String comm = ae.getActionCommand();

if("开始".equals(comm)){

x = x+480;

repaint();

t.start();

}else{

x = x-5;

if(x <= -350)

t.stop();

repaint();

}

}

public void paint(Graphics g){

super.paint(g);//刷新背景

Graphics2D g2 = (Graphics2D)g;

g2.setStroke(new BasicStroke(8));//设置轮廓宽度

g2.setColor(Color.BLUE);

g2.drawOval(x,y,100,100);

g2.setColor(Color.BLACK);

g2.drawOval(x+110,y,100,100);

g2.setColor(Color.RED);

g2.drawOval(x+220,y,100,100);

g2.setColor(Color.ORANGE);

g2.drawOval(x+55,y+50,100,100);

g2.setColor(Color.GREEN);

g2.drawOval(x+165,y+50,100,100);

g2.setColor(Color.MAGENTA);

g2.setFont(new Font("SansSerif",Font.BOLD,40));

g2.drawString("Olympic Games",x+15,y-30);

}

public static void main(String[] args){

new Graphics05("Second Graph");

}

}

展开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值