学习Java随记之swing编程(1)

最近在学习swing编程,依据老师的教学视频学习使用java.awt.*、javax.swing.*、java.awt.event.*包进行简单的tank大战游戏编程,学习了JFrame、JPanel等容器和组件的使用,学习使用Graphics的各种方法绘制图形,以及一些事件监听和处理方法。

JFrame这个类在目前的学习中都是继承使用,然后调用三板斧把他显示出来,例如:

public class MyTankGame extends JFrame {//继承JFrame
        ....
    public static void main(String[] args) {
        MyTankGame mtg = new MyTankGame();

    }
        public MyTankGame() {
        //三板斧
        this.setSize(400,300);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭即退出,防内存泄漏
        this.setVisible(true);
    }
}

坦克是使用Graphics作为画笔画2个长矩形(作为坦克的履带。也可用6个小矩形连接组成的大矩形代替更好看),1个短矩形,1个圆,1条线组合起来,其中矩形使用fill3DRect方法以显示边框,

    for (int i = 0; i < 5; i++) {
    g.fill3DRect(x, y + 6 * i, 5, 6, false);
    g.fill3DRect(x + 15, y + 6 * i, 5, 6, false);
    }
    g.fill3DRect(x + 5, y + 5, 10, 20, false);
    g.fillOval(x + 4, y + 10, 10, 10);
    g.drawLine(x+10, y+1, x+10, y+10);    

然后通过repaint方法刷新坦克实现坦克的移动,其中涉及到事件的监听和事件处理方法,可在画坦克的类JPanel调用KeyListener接口监听JFrame,在JFrame中注册JPanel的监听,这样JPanel就能监听键盘的输入,然后根据需要重写KeyListener的keyPressed、keyReleased等方法,使用(e的类型也是KeyEvent)e.getKeyCode()==KeyEvent.VK_····进行判断进行进一步的处理。

public class MyTankGame extends JFrame {

    MyPanel mp = null;

    public static void main(String[] args) {
        MyTankGame mtg = new MyTankGame();

    }

    public MyTankGame() {
        mp = new MyPanel();
        mp.setBackground(Color.black);//设置背景色
        this.add(mp);

        this.addKeyListener(mp);//注册监听
        ·····
    }

}
class MyPanel extends JPanel implements KeyListener {

        ········
        @Override
    public void keyPressed(KeyEvent e) {
        // TODO Auto-generated method stub
        int speed=2;
        //移动坦克并改变方向
        if((e.getKeyCode()==KeyEvent.VK_S)){
            ty+=speed;
            h.setY(ty);
            h.setDirect(-1);
        }else if(·····){
                    ·····
                }
        }
}

至此一个可以自由移动的坦克就出来了。

效果图如下:

原文地址:https://www.cnblogs.com/hijackhou/p/8179849.html

时间: 2024-10-09 06:29:42

学习Java随记之swing编程(1)的相关文章

学习java,自学需要先学习什么

我想学习JAVA ,做一名编程人员. 但是没什么基础,除了会玩游戏,别的基本不会什么了. 顶多也就算是了解电脑基础. 我想知道我自学JAVA的话,应该先学什么再学什么. 谢谢大家非常谢谢大家的解答.我现在又面对了 如何学习C的问题.因为没有基础知识,导致我不知从何下手.刚刚下了一本电子书教C的,可发现并不太适合我,很多词汇都不理解. 锁业还希望有朋友能推荐一本.另外,我现在的年龄不小了,实在不好意思管家里要钱去学校学习了,打算自学.哪位前辈如果精力比较充沛,可以带带我,告诉我学习方法,不胜感激.

JAVA入门到精通-第32讲-swing编程实战

 JBorderLayout,左边是JList,拆分窗格: 图片是放在JLabel上的,图片的地址写好就行:  在相关项目下面建立一个文件夹Folder,放置图片:或者复制粘贴:   拆分:水平拆分?垂直拆分?    拆分之后把jList和jl1这两个组件放进去: 可以伸缩:  在窗口左上角出现自己的图标? Border布局: 多行文本框带滚动条,聊天窗口可滚动:   加入QQ左上角图标:      转成图片,getImage; Border布局很有用, CENTER会被自动挤满:  QQ号码.

五本书籍助你从零基础学习java编程到精通之路

前天的文章给大家介绍了Java初学者应该学习哪些基础,亦是美网络小编从Java的三个大方向:J2SE.J2EE.J2ME对大家做了前景分析,这两天也收到了大家的很多反馈,很多小伙伴看了后对自己的Java编程方向有了比较明确的目标,也有小伙伴们说,要是能提供一些Java初学者应看的书籍就更好了,其实推荐Java书籍已经被规划在小编写的Java编程系列文章之中,常言道:书中自有黄金屋,书中自有颜如玉,下面亦是美网络小编给大家推荐的Java书籍中虽然没有黄金屋和颜如玉,但却能让Java编程的初学者快速

JAVA学习笔记(四十九)- Swing相关组件

JFrame组件 import java.awt.Color; import javax.swing.JFrame; import javax.swing.JPanel; /* * Swing是在AWT基础上的扩展 * javax.swing包及其扩展包,组件的命名多以J开关 * * JFrame组件 */ public class Test08 { public static void main(String[] args) { JFrame frame=new JFrame("我的窗体&qu

疯狂JAVA讲义---第十二章:Swing编程(五)进度条和滑动条

http://blog.csdn.net/terryzero/article/details/3797782 疯狂JAVA讲义---第十二章:Swing编程(五)进度条和滑动条 标签: swing编程java任务timerstring 2009-01-16 21:12 6722人阅读 评论(0) 收藏 举报  分类: J2SE(63)  版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天讲了Swing基本的控件,今天开始讲特殊控件.一天讲2个吧,首先讲用JProgressBar,Pro

学习java编程能往哪些方向发展

当下Java训练非常热,是因为通过学习java能够快速的就业,这对于今年就业压力非常大的大学生来说,无疑是一条就业的捷路,虽然培教育费动辄过万,但还是非常值得的. 可是你可曾想过,学习了java编程后,你就只能做java程序员吗?亦或者做了Java程序员,又具体是什么岗位呢?职业发展方向是什么,如何晋升?这些都是你需要提前考虑的,这里提醒大家就业不仅仅是找到一个工作,拿一份工资,更多的意义在于开始自己的职业生涯. 做java程序员也有很多方向 第一:一般来说,java的应用还是非常广的,有erp

少年学习java等编程开发课程是一种愚蠢的时尚[图]

少年学习java等编程开发课程是一种愚蠢的时尚[图]:这篇文章仅仅代表一种不同的发声,不代表大部分人的意见,让孩子坐在电脑前面敲打键盘,掌握他们父母梦寐以求的技能.God,没有什么比教会我们的孩子写编码,这种想法更让人向往了."未来的大多数工作都与写编码有关系"英国邦创新.科学.经济发展部部长Navdeep Bains向大家展示了他们最近拍摄的一张照片:房间里面坐满了正在写代码的少年儿童.Navdeep Bains宣布了一项耗资5000万美元的计划,向年轻人教授如何编程. "

零基础转行学习Java编程,有哪些学习方法可以借鉴

中国互联网的加速发展,大概从1997年开始,前期是 PC 互联网,后来移动互联网,现在互联网+,再接下来物联网.智慧城市.智慧交通.人工智能,一路蓬勃发展,虽有小波折,大趋势从未变过,未来一面泛化.一面深化,十年八年,趋势向好! 十三五规划对应 2016 -- 2020 年,大方向是加快壮大战略性新兴产业,打造经济社会发展新引擎.在战略性新兴产业中,分量非常重的就是信息技术产业和网络经济.信息技术和网络经济,是国家战略规划的重点,国家层面将会提供各种政策.资金.资源的支持,保障它快速.广泛的发展

程序员如何用思维导图高效学习Java编程

Java作为一种常见的计算机编程语言,它具有简单.稳定.多线等特点,被广泛运用于PC.游戏控制台.数据中心.超级计算机以及互联网,相对于C++,Java会稍微容易些,但是依然需要我们学会很多的编程,作为一名程序员,如何系统的掌握这些程序呢?下面是分享的用思维导图学习Java编程方法介绍,一起看看吧! 为什么要用思维导图学习Java呢? 首先思维导图是一种结构性模型,有利于整合知识框架,其次,思维导图是一种带色彩的图文结合,相对于单纯的文字而言,更好的被人们所记住,迅捷画图作为一款好用的思维导图工