该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.geom.Ellipse2D;

import java.util.ArrayList;

import javax.swing.*;

public class Bounce {

/**

* @param args

*/

public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {

@Override

public void run() {

BallFrame f = new BallFrame();

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

f.setLocationRelativeTo(null);

f.setVisible(true);

}

});

}

}

class BallFrame extends JFrame {

private Timer timer;

private Action start, stop;

private PaintPanel panel;

public BallFrame() {

setTitle("Ball");

panel = new PaintPanel();

panel.addBall(new Ball(20, 20));

panel.setPreferredSize(new Dimension(500, 400));

getContentPane().add(panel, BorderLayout.CENTER);

timer = new Timer(10, panel);

JPanel control = new JPanel(); // FlowLayout(FlowLayout.CENTER)

start = new AbstractAction("Start") {

@Override

public void actionPerformed(ActionEvent e) {

if( !timer.isRunning() )

timer.start();

start.setEnabled(false);

stop.setEnabled(true);

}

};

stop = new AbstractAction("Stop") {

@Override

public void actionPerformed(ActionEvent e) {

if( timer.isRunning() )

timer.stop();

start.setEnabled(true);

stop.setEnabled(false);

}

};

stop.setEnabled(false);

control.add(new JButton(start));

control.add(new JButton(stop));

getContentPane().add(control, BorderLayout.SOUTH);

pack();

}

}

class Ball {

private int x, y, dx = 1, dy = 1; //dx,dy 是移动的量· x,y 是坐标

public Ball(int x, int y) {

this.x = x;

this.y = y;

}

public void move(int x_max, int y_max) {

x += dx;

y += dy;

if( x < 0 ) {

dx = -dx;

x += 2 * dx;

}

if( y < 0 ) {

dy = -dy;

y += 2 * dy;

}

if( x > x_max ) {

dx = -dx;

x += 2 * dx;

}

if( y > y_max ) {

dy = -dy;

y += 2 * dy;

}

}

public Ellipse2D getShape() {

return new Ellipse2D.Double(x, y, 20, 20);

}

}

class PaintPanel extends JComponent implements ActionListener {

private java.util.List balls = new ArrayList();

public void addBall(final Ball b) {

if( b == null )

return;

if( EventQueue.isDispatchThread() )

balls.add(b);

else {

EventQueue.invokeLater(new Runnable() {

@Override

public void run() {

addBall(b);

}

});

}

}

@Override

public void paintComponent(Graphics g) {

@SuppressWarnings("unchecked")

Graphics2D g2 = (Graphics2D)g.create();

g2.setColor(Color.BLUE);

for(Ball b : balls)

g2.fill(b.getShape());

g2.dispose();

}

@Override

public void actionPerformed(ActionEvent e) {

for(Ball b : balls)

b.move(getWidth(), getHeight());

repaint();

}

}

@Deprecated

class Run implements Runnable {

int height = 0, width = 0;

Ball ball;

Component c;

PaintPanel p;

BallFrame bf;

public Run(Ball ball, PaintPanel p) {

this.ball = ball;

this.c = p;

}

@Override

public void run() {

System.out.println("进入线程?");

BallFrame ballFrame = new BallFrame();

height = ballFrame.getHeight();

width = ballFrame.getWidth();

for(int i = 1; i < 100; i++) {

try {

System.out.println("move " + i);

ball.move(width, height);

c.repaint();

Thread.sleep(1);

}

catch(InterruptedException e) {

}

}

}

}

java repaint 无效_repaint() 无效 求助 谢谢相关推荐

  1. java光标位置无效_java - java.sql.SQLException:无效的光标位置 - 堆栈内存溢出

    我创建了一个简单的应用程序,使用户可以购买门票. 但是,每当我尝试购买" n"张门票时,都会遇到此错误. 现在,我知道在使用数据库进行操作时需要crs.next()语句,我已经使用 ...

  2. Error querying database. Cause: java.sql.SQLSyntaxErrorException: ORA-00911: 无效字符

    org.springframework.web.util.NestedServletException: Request processing failed; nested exception is ...

  3. java.sql.SQLException: ORA-00911: 无效字符 解决方法

    如果你用java写程序访问数据库,出现这个问题: java.sql.SQLException: ORA-00911: 无效字符 at oracle.jdbc.driver.DatabaseError. ...

  4. 解决bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: ORA-00911: 无效字符

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1. 报错: ### Cause: java.sql.SQLSyntaxErrorException ...

  5. mybatis项目报错:java.sql.SQLException: ORA-00911: 无效字符 解决方法

    mybatis项目报错:java.sql.SQLException: ORA-00911: 无效字符 解决方法 参考文章: (1)mybatis项目报错:java.sql.SQLException: ...

  6. java 句柄无效_Java开发网 - java.io.IOException: 句柄无效???

    Posted by:aideliwu Posted on:2004-09-01 21:32 我思考le很久,也查看啦代码很久,可还是百思不得其解, 在Freejava中运行的结果还是: java.io ...

  7. ### Cause: java.sql.SQLSyntaxErrorException: ORA-01722: 无效数字

    org.springframework.dao.DataIntegrityViolationException: ### Error querying database. Cause: java.sq ...

  8. java.sql.SQLException: ORA-00911: 无效字符(编译器大坑)

    今天遇到一个问题,java中执行sql,sql明明是对的,复制到datagrip(或 plsql Dev)都能执行,但就是报错: 1017 122715 [http-apr-18083-exec-7] ...

  9. oracle java.sql.SQLException: 列名无效

    执行一段sql, String sql="select e.*,nvl(p.userid,0) as proid from (select * from (select ROWNUM as ...

最新文章

  1. mysql存储过程-汇总学习
  2. ubantu14.04下固定ip的配置方法以及问题处理
  3. 中国影视股,越补贴,越萎靡
  4. wamp php imagick,如何在wamp for Windows中安装和启用Imagick扩展 php psd 生成缩略图
  5. ICanPay 统一支付网关
  6. Python-又到了抢票的季节(带验证码识别验证)
  7. 小鹏汽车自动驾驶内推(社招+校招)
  8. java三个数比大小_三个数的比较 不同的实现方法java
  9. 分分钟教你学会 ToolBar 的使用(转)
  10. 通信维修专用电源_万可PRO 2电源 | 开拓性通信功能,自信迈入数字化时代
  11. java dbutil_DBUtil java工具类
  12. 西门子水处理1200PLC程序+触摸屏程序,博图V16学习程序,可仿真实验 Plc程序包含功能块,功能块为SCL编写
  13. nxp单片机入门_ST、NXP、Microchip、TI、Renesas公司的MCU和MPU定位、性能及特点
  14. 怎么自己做淘宝优惠券的网站?看完这个你就全懂了
  15. Quorum加密技术分析
  16. Linux下查看网络设备类型
  17. 机器学习数据挖掘笔记_18(PGM练习二:贝叶斯网络在遗传图谱在的应用)
  18. 学WEB前端开发,自学还是培训靠谱
  19. 利用留数定理计算实积分
  20. Inno Setup实例教程之一:软件安装和demo使用

热门文章

  1. 站在中间立场看 360 VS QQ
  2. Echarts地图不展示南海九段线/南海诸岛问题解决
  3. oracle大于号怎么用,解决MyBatis的mapper中SQL小于号或大于号报错-tag name expected
  4. PHP strtotime函数参数
  5. 用计算机设计主题色调,网页设计之主题配色四大技巧
  6. linux的c语言捕获sigsegv,Segmentation Fault in Linux (2.4栈溢出了,有时SIGSEGV,有时却啥都没发生)...
  7. adb应用安装失败分析
  8. 这30张高清速查表 竟然比官网还厉害,速领
  9. PHP爬虫音乐,PHP 爬虫———爬取网易云音乐歌单
  10. 【4 - 分组】Sql Server - 郝斌(分组group by、过滤having、聚合函数max() / count()、排序order by、select语句的执行顺序)