- 浏览: 313888 次
文章分类
最新评论
-
luokery:
你把正常的代码放到try里面不就好了, 异常的时候就catch ...
巧用while循环避免执行除了异常处理的的另一个处理机制 -
java_doom:
这个行号根据什么来的 为什么不是连续的?
别拿Hadoop map key当id使 -
mixer_b:
...
写博客的那些事儿 -
flyfx:
谢谢谢谢
java break,continue,return 使用。【借鉴与改编】 -
andilyliao:
比起青鸟 我更鄙视大学。
北大青鸟就让你们这么鄙视吗.
周末用swing绘制了一只直升机 对swing的的绘制技术有些总结:
1.图形基于坐标系定位 坐标原点位于左上角 分别向右(x轴) 向下(y轴)递增
2.图形按像素组成
3.重写Jcomponent的paint方法 其中的Graphics g 对象相当于画笔
4.对于特别复杂的图形无法绘制 可以用g.drawImage载入 但比较消耗资源
5.擅用g.drawArc、d.drawPloygon、d.drawPloyline 这三个函数可以画出比较复杂的图形
感觉swing对图型图像的处理相对较弱,在开发比较痛苦package com.gs.swing;
import java.awt.Color; import java.awt.Graphics; import javax.swing.JFrame; import javax.swing.JPanel; public class Helicoper extends JFrame{ public Helicoper(){ this.setSize(400,300); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } public static void main(String[] args) { Helicoper frame = new Helicoper(); Panel panel = new Panel(); frame.add(panel); } } class Panel extends JPanel { public void paint(Graphics g) { super.paint(g); //着色 //后浆 g.setColor(Color.CYAN); g.fillOval((15-12),(31-12),12*2,12*2); //前桨 g.fillPolygon(new int[]{62,63,65,69,77,93,108}, new int[]{11,10,9,8,7,6,6}, 7); g.fillPolygon(new int[]{62,77,93,101,105,107,108}, new int[]{11,10,9,8,7,6,6}, 7); g.fillPolygon(new int[]{112,113,115,119,127,143,158}, new int[]{6,5,4,3,2,1,1}, 7); g.fillPolygon(new int[]{112,127,143,151,155,157,158}, new int[]{6,5,4,3,2,1,1}, 7); //飞机躯干 g.setColor(Color.GREEN); g.fillPolygon( new int[] { 158, 147, 139, 124, 120, 92, 76, 50,46,37,41, 14, 15, 75, 89, 142}, new int[] { 43, 34, 27, 23, 19, 19, 26, 28,25,25,28, 29, 33, 39, 51, 51}, 16); g.fillArc(89+20, 52-(52-43)*2, (158-89)-20, (52-43)*2, 0, -70); //机身 g.setColor(Color.GRAY); g.fillPolygon(new int[]{87,123,124,74}, new int[]{22,22,24,26}, 4); g.fillArc(131-10, 38-(44-38), 10, (44-38)*2, 0, -90); g.fillPolygon(new int[]{74,81,131-10/2,131,124}, new int[]{26,44,44,38,24}, 5); g.fillPolygon(new int[]{54,45,37,46}, new int[]{31,31,25,25}, 4); //尾翼 g.fillPolygon(new int[]{24,17,14,13}, new int[]{28,21,21,28}, 4); g.fillArc(13,19,4,4,160,-180); //前桨 g.setColor(Color.RED); g.fillPolygon(new int[]{112,112,108,108}, new int[]{19,10,10,19}, 4); g.fillOval(108, (10-4), 4, 4); //飞机窗口 g.setColor(Color.BLACK); g.fillPolygon(new int[]{147,133,128,139}, new int[]{34,34,25,27}, 4); g.fillPolygon(new int[]{87,123,120,92}, new int[]{22,22,19,19}, 4); g.fillPolygon(new int[]{129,120,116,124}, new int[]{35,35,26,24}, 4); g.fillPolygon(new int[]{113,117,108,102}, new int[]{26,35,35,26}, 4); //飞机躯干 g.drawPolyline( new int[] { 158, 147, 139, 124, 120, 92, 76, 50,46,37,41, 14, 15, 75,89 ,142}, new int[] { 43, 34, 27, 23, 19, 19, 26, 28,25,25,28, 29, 33, 39, 51,51}, 16); g.drawArc(89+20, 52-(52-43)*2, (158-89)-20, (52-43)*2, 0, -70); //飞机头部 g.drawPolyline(new int[]{147,133,128}, new int[]{34,34,25}, 3); //飞机机身 g.drawPolyline(new int[]{87,123}, new int[]{22,22}, 2); g.drawPolyline(new int[]{74,124,131}, new int[]{26,24,38}, 3); g.drawArc(131-10, 38-(44-38), 10, (44-38)*2, 0, -90); g.drawPolyline(new int[]{74,81,131-10/2}, new int[]{26,44,44}, 3); g.drawPolyline(new int[]{129,120,116}, new int[]{35,35,26}, 3); g.drawPolyline(new int[]{113,117,108,102}, new int[]{26,35,35,26}, 4); g.drawPolygon(new int[]{54,45,37,46}, new int[]{31,31,25,25}, 4); g.drawLine(99, 26, 106, 44); g.drawLine(99, 32, 101, 32); g.drawLine(102, 39, 104, 39); //飞机前桨 g.drawPolyline(new int[]{112,112,108,108}, new int[]{19,10,10,19}, 4); g.drawOval(108, (10-4), 4, 4); g.drawArc(108-(108-62)*2, 6-5, (108-62)*2, 5*2, 0, -90); g.drawArc(108-(108-62), 6, (108-62)*2, 5*2, 180, -90); g.drawArc(112-(108-62), 6-5*2, (108-62)*2, 5*2, 0, -90); g.drawArc(112, 6-5, (108-62)*2, 5*2, 180, -90); //飞机后浆 计算正切圆的切点坐标及外接正方形的起点坐标 g.drawPolyline(new int[]{24,17}, new int[]{28,21}, 2); g.drawPolyline(new int[]{13,14}, new int[]{21,28},2); g.drawArc(13,19,4,4,160,-180); g.drawOval((15-12),(31-12),12*2,12*2); g.drawArc((15-8),(31-8),8*2,8*2,20,120); g.drawArc((15-8),(31-8),8*2,8*2,-20,-50); g.drawArc((15-8),(31-8),8*2,8*2,-90,-100); //飞机底座 g.drawArc(108,51,16,16,0,90); g.drawArc(130,51,16,16,20,90); g.drawArc(55,(51-8+6),100,(16-6),-20,-70); } }
效果:
评论
10 楼
long_yu2
2012-04-13
xc_wangwang 写道
swing可以做的东西还很多,楼主加油~~
谢谢
9 楼
long_yu2
2012-04-13
dyllove98 写道
swing已经非主流了...不过还算漂亮吧
谢谢提醒
8 楼
long_yu2
2012-04-13
勇敢的核桃 写道
仅仅是好玩儿而已、、、
swing太非主流了,虽然俺很喜欢它
swing太非主流了,虽然俺很喜欢它
新手刚学习
7 楼
long_yu2
2012-04-13
touch_123 写道
好玩。很漂亮
6 楼
lbfhappy
2012-04-13
楼主加上一下抗锯齿,效果应该会好很多的。
5 楼
xc_wangwang
2012-04-13
swing可以做的东西还很多,楼主加油~~
4 楼
comsci
2012-04-13
支持SWING,用SWING一用到底。。。
3 楼
dyllove98
2012-04-13
swing已经非主流了...不过还算漂亮吧
2 楼
勇敢的核桃
2012-04-13
仅仅是好玩儿而已、、、
swing太非主流了,虽然俺很喜欢它
swing太非主流了,虽然俺很喜欢它
1 楼
touch_123
2012-04-13
好玩。很漂亮
发表评论
-
java如何终止线程
2012-04-24 21:38 1032对于线程的终止或者中断,由于java中Thread.stop方 ... -
ubuntu-11.10-server-i386学习笔记-网络基本配置
2012-04-23 22:11 9961. 静态IP地址配置 配置文件路径:/etc/networ ... -
ubuntu-11.10-server-i386学习笔记-Apache安装
2012-04-23 22:11 797第一步:先更新安装包缓存 1.1 sudo apt-get ... -
ubuntu-11.10-server-i386学习笔记-SVN版本服务器安装
2012-04-23 22:10 1041在安装SVN前,假设你的Apache已经安装好了。 ... -
ubuntu-11.10-server-i386学习笔记-SVN版本服务器-客户端测试
2012-04-23 22:10 708进入客户端测试之前,您应该确保svn服务器已经正确安装,如果您 ... -
svn服务器搭建经验总结
2012-04-23 22:09 958从最近几天的实验来看,svn(Subversion versi ... -
Java根据word模板生成word文档之后台解析和实现及部分代码(二)
2012-04-18 13:59 1866上一节贴出了web应用访问生成报告的action ... -
Java根据word模板生成word文档之后台解析和实现及部分代码(一)
2012-04-18 13:59 2039后台主要工作是解析XML定义的标签文件,并 ... -
单例类、final、抽象类
2012-04-15 23:53 1620前些日子一直没写博客,因为病了,所以就耽误了,现在好点了 ... -
怎样在架构中合理的设置request中的Lcoale
2012-04-15 23:51 1204相信很多朋友在做J2EE国际化的时候,很可能遇到这个问题 ... -
一个Java时间工具类
2012-04-14 21:50 974主要包含了对时间操作的一些工具方法,仅供参考吧! ... -
POI Excel导出,我的又一个模板方法
2012-04-14 21:49 2759下面有源码,下载就可以用,如果因为包的问题,就拷贝我 ... -
Poi 读写Excel 合并ExcelSheet Struts2实现
2012-04-14 21:48 1450网上有许多人在找这样的例子,有多个Excel,要把他们合 ... -
POI读取Excel浅谈
2012-04-14 21:48 838先看代码,挨句解释: 一般遍历使用两种方式,1:得到总 ... -
struts2项目中静态html在firefox下乱码的解决
2012-04-13 00:03 942struts2 项目,通常开 ... -
黑马程序员——Java开发前奏
2012-04-12 23:59 780对于Java,我的一 ... -
《JAVA与模式》之单例模式
2012-04-12 23:58 732在阎宏博士的《JAVA与模式》一书中开头是这样描述单例模 ... -
Java中的String不再纠结
2012-04-12 23:58 1424又是新的一月,又是各种总结,先分享一下java中st ...
相关推荐
一个用swing绘制sin曲线的小程序 供初学者借鉴借鉴
基于JAVA模拟操作系统作业调度算法(源码+项目说明)(界面用Swing绘制).zip基于JAVA模拟操作系统作业调度算法(源码+项目说明)(界面用Swing绘制).zip基于JAVA模拟操作系统作业调度算法(源码+项目说明)(界面...
包含 旧版本 gnujaxp.jar jcommon-1.0.13.jar jfreechart-1.0.10-experimental.jar jfreechart-1.0.10-swt.jar swtgraphics2d.jar junit.jar 新版本 jcommon-1.0.23.jar jfreechart-1.0.19.jar ...
startUML、java、swing startUML、java、swing startUML、java、swing
用java的Swing编写的一个简单的绘图软件,可以用来绘制简单的图形,还可以保存,复制,粘贴。虽然有点小Bug,但是用来当一个毕业设计绝对够格!
主要为大家详细介绍了java使用swing绘制国际象棋棋盘,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
华夫直升机 我上高中时就使用Swing用Java编写的直升机游戏。 将环境变量设置为图像的路径,然后播放! 随机地形生成 无限的可玩性 糟糕的动画 保存并记录高分
主要为大家详细介绍了使用Swing绘制动态时钟,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3...
Java通过swing界面实现简易飞机小游戏.zipJava通过swing界面实现简易飞机小游戏.zip Java通过swing界面实现简易飞机小游戏.zipJava通过swing界面实现简易飞机小游戏.zip Java通过swing界面实现简易飞机小游戏.zip...
JAVA编写的描画抛物线程序。程序根据输入的坐标自动生成所对应的抛物线。
swing计算器 swing计算器swing计算器 swing计算器swing计算器 swing计算器swing计算器 swing计算器swing计算器 swing计算器 简易计算器
开发环境为intellij15+jdk8.0; 功能:使用swing创建窗口,添加主面板,在主面板下有几个tab,通过tab切换绘制不同的图形。
注册,登录,改密码,存款,取款,转账,交易记录,手机...1.基于JavaSwing开发的ATM取款机系统,适合课程设计和毕业设计参考 2.使用技术:mysql+jdbc+dbutils 3.功能介绍:支持设置背景图片,经过多次优化,100%可运行
swing 教程swing 教程swing 教程swing 教程swing 教程swing 教程swing 教程swing 教程swing 教程
贪吃虫游戏应该是Java初学者必做的案例,本游戏用只用了绘图功能,没有引用任何外部资源,具有简单交互功能(UI美化真的很费时间,做的有点丑,哈哈),纯手工打造,仅供初学者研究!本人在编程方面知识积累很有限,...
白板使用 Swing 绘制几何形状的 Java WhiteBoard 类谢谢感谢 Georg Beier 教授
辛苦俩天用JAVA的SWING 做的4个无线网络里的射频波形(原始的\FM\AM\PM),这个是作业希望有类似作业的朋友可以减少辛苦!紧供参考
学习的时候课堂作业,很基础,但是初学者可以由此入门