用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - java代码库

* 重写void paint( Graphics g )方法

2017-12-17 作者: 145664举报

[java]代码库

package org.crazyit.ball;
 
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;
import java.awt.Dimension;
import java.awt.Image;
import java.awt.Graphics;
import java.awt.Color;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyListener;
import java.awt.event.KeyEvent;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.io.IOException;
 
/*
 * 游戏界面
 */
public class BallFrame extends JFrame {
    // 定义JPanel的宽度
    private final int BALLPANEL_WIDTH = 307;
    // 定义JPanel的高度
    private final int BALLPANEL_HEIGHT = 400;
    // 定义画板
    private BallPanel ballPanel = null;
    // 定义档板
    // private Image stick = null;
    // 设置档板x坐标
    private int stickX = -1;
    // 创建一个BallService实例
    private BallService service = null;
    // 定义一个timer
    Timer timer = null;
 
    /**
     * 默认构造器
     */
    public BallFrame() throws IOException {
        super();
        // 初始化
        initialize();
    }
 
    /*
     * 初始化界面
    */
    public void initialize() throws IOException {
        // 设置窗口的标题
        this.setTitle("弹球");
        // 设置为不可改变大小
        this.setResizable(false);
        // 设置背景为黑色
        this.setBackground(Color.BLACK);
        // 获取画板
        ballPanel = getBallPanel();
        // 创建BallService实例
        service = new BallService(this, BALLPANEL_WIDTH, BALLPANEL_HEIGHT);
 
        // 定义每0.1秒执行一次监听器
        ActionListener task = new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                // 开始改变位置
                service.run();
                // 刷新画板
                ballPanel.repaint();
            }
        };
        // 如果timer不为空
        if (timer != null) {
            // 重新开始timer
            timer.restart();
        } else {
            // 新建一个timer
            timer = new Timer(100, task);
            // 开始timer
            timer.start();
        }
 
        this.add(ballPanel);
        // 增加事件监听器
        KeyListener[] klarr = this.getKeyListeners();
        if (klarr.length == 0) {
            // 定义键盘监听适配器
            KeyListener keyAdapter = new KeyAdapter() {
                public void keyPressed(KeyEvent ke) {
                    // 改变档板的坐标
                    service.setStickPos(ke);
                }
            };
            this.addKeyListener(keyAdapter);
        }
    }
 
    public BallPanel getBallPanel() {
 
        if (ballPanel == null) {
            // 新建一个画板
            ballPanel = new BallPanel();
            // 设置画板的大小
            ballPanel.setPreferredSize(new Dimension(BALLPANEL_WIDTH,
                    BALLPANEL_HEIGHT));
        }
        return ballPanel;
    }
 
    // 定义一个JPanel内部类来完成画图功能
    public class BallPanel extends JPanel {
        /**
         * 重写void paint( Graphics g )方法
         *
         * @param g
         *            Graphics
         * @return void
         */
        public void paint(Graphics g) {
            // 画图
            service.draw(g);
        }
    }
 
}


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...