- 浏览: 334591 次
文章分类
最新评论
-
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); } }
效果:
评论
30 楼
long_yu2
2012-04-15
junjun185576005 写道
color=red]楼主太强大了![ [/color]
谢谢支持
29 楼
long_yu2
2012-04-15
jelly_x 写道
牛,我用笔都很难画出来这样的
28 楼
long_yu2
2012-04-15
xieye 写道
有点文艺青年范
呵呵 谢谢支持
27 楼
long_yu2
2012-04-15
贾懂凯 写道
楼主是否先P图?然后量坐标?
呵呵,看着图来做
26 楼
long_yu2
2012-04-15
漫步邃思 写道
不错,很有创意啊
谢谢支持
25 楼
long_yu2
2012-04-15
mixer_b 写道
很好玩...
24 楼
贾懂凯
2012-04-15
楼主是否先P图?然后量坐标?
23 楼
xieye
2012-04-15
有点文艺青年范
22 楼
jelly_x
2012-04-14
牛,我用笔都很难画出来这样的
21 楼
junjun185576005
2012-04-14
color=red]楼主太强大了![ [/color]
20 楼
漫步邃思
2012-04-14
不错,很有创意啊
19 楼
long_yu2
2012-04-14
huihuilou 写道
SWT像一位建筑师,SWING更像是一位艺术家。但是都跟不上时尚。
18 楼
huihuilou
2012-04-13
SWT像一位建筑师,SWING更像是一位艺术家。但是都跟不上时尚。
17 楼
long_yu2
2012-04-13
i2534 写道
建议不要重写paint,重写paintComponent就可以了
有道理,我试下
16 楼
long_yu2
2012-04-13
_Chaos_ 写道
Swing现在用的人实在太少了,不过其设计模式还是很经典的,值得学习
谢谢支持
15 楼
long_yu2
2012-04-13
mixer_b 写道
很好玩...
14 楼
i2534
2012-04-13
建议不要重写paint,重写paintComponent就可以了
13 楼
_Chaos_
2012-04-13
Swing现在用的人实在太少了,不过其设计模式还是很经典的,值得学习
12 楼
mixer_b
2012-04-13
很好玩...
11 楼
long_yu2
2012-04-13
lbfhappy 写道
楼主加上一下抗锯齿,效果应该会好很多的。
我试一下,谢谢
发表评论
-
java如何终止线程
2012-04-24 21:38 1076对于线程的终止或者中断,由于java中Thread.stop方 ... -
ubuntu-11.10-server-i386学习笔记-网络基本配置
2012-04-23 22:11 10431. 静态IP地址配置 配置文件路径:/etc/networ ... -
ubuntu-11.10-server-i386学习笔记-Apache安装
2012-04-23 22:11 837第一步:先更新安装包缓存 1.1 sudo apt-get ... -
ubuntu-11.10-server-i386学习笔记-SVN版本服务器安装
2012-04-23 22:10 1126在安装SVN前,假设你的Apache已经安装好了。 ... -
ubuntu-11.10-server-i386学习笔记-SVN版本服务器-客户端测试
2012-04-23 22:10 746进入客户端测试之前,您应该确保svn服务器已经正确安装,如果您 ... -
svn服务器搭建经验总结
2012-04-23 22:09 1024从最近几天的实验来看,svn(Subversion versi ... -
Java根据word模板生成word文档之后台解析和实现及部分代码(二)
2012-04-18 13:59 1944上一节贴出了web应用访问生成报告的action ... -
Java根据word模板生成word文档之后台解析和实现及部分代码(一)
2012-04-18 13:59 2104后台主要工作是解析XML定义的标签文件,并 ... -
单例类、final、抽象类
2012-04-15 23:53 1667前些日子一直没写博客,因为病了,所以就耽误了,现在好点了 ... -
怎样在架构中合理的设置request中的Lcoale
2012-04-15 23:51 1266相信很多朋友在做J2EE国际化的时候,很可能遇到这个问题 ... -
一个Java时间工具类
2012-04-14 21:50 1031主要包含了对时间操作的一些工具方法,仅供参考吧! ... -
POI Excel导出,我的又一个模板方法
2012-04-14 21:49 2843下面有源码,下载就可以用,如果因为包的问题,就拷贝我 ... -
Poi 读写Excel 合并ExcelSheet Struts2实现
2012-04-14 21:48 1523网上有许多人在找这样的例子,有多个Excel,要把他们合 ... -
POI读取Excel浅谈
2012-04-14 21:48 903先看代码,挨句解释: 一般遍历使用两种方式,1:得到总 ... -
struts2项目中静态html在firefox下乱码的解决
2012-04-13 00:03 1007struts2 项目,通常开 ... -
黑马程序员——Java开发前奏
2012-04-12 23:59 824对于Java,我的一 ... -
《JAVA与模式》之单例模式
2012-04-12 23:58 782在阎宏博士的《JAVA与模式》一书中开头是这样描述单例模 ... -
Java中的String不再纠结
2012-04-12 23:58 1457又是新的一月,又是各种总结,先分享一下java中st ...
相关推荐
Java Swing 是Java GUI(图形用户界面)库的一部分,它提供了丰富的组件和工具,用于构建桌面应用程序。在这个场景中,我们讨论的是如何使用Java Swing来绘制正弦曲线,这对于理解和掌握图形绘制以及数学与编程的...
基于JAVA模拟操作系统作业调度算法(源码+项目说明)(界面用Swing绘制).zip基于JAVA模拟操作系统作业调度算法(源码+项目说明)(界面用Swing绘制).zip基于JAVA模拟操作系统作业调度算法(源码+项目说明)(界面...
创建一个简单的Java Swing程序,演示如何绘制虚线和实线: ```java import javax.swing.*; import java.awt.*; public class DrawLines extends JFrame { public DrawLines() { setSize(400, 400); ...
在Java编程语言中,实现抛物线的绘制是一项常见的图形处理任务,这主要涉及到二维图形的绘制和数学原理的应用。本项目中,开发者利用Java的图形库,如Java AWT或Swing,来创建用户界面并实现抛物线的动态显示。下面...
使用 Swing 可以创建各种图形化的应用程序,本文将介绍如何使用 Java 和 Swing 绘制一个国际象棋棋盘。 什么是国际象棋棋盘 国际象棋棋盘是一个 8x8 的格子棋盘,棋盘上的每个格子都可以放置棋子。棋盘的颜色通常...
包含 旧版本 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 ...
java swing表格分页控件封装,有利于在开发中节约时间
**华夫直升机(WaffleCopter)**是一款使用Java编程语言,并结合Swing图形用户界面库开发的直升机游戏。Swing是Java的一个标准库,用于构建桌面应用,它提供了丰富的组件和功能来创建交互式用户界面。 ### 游戏机制与...
项目基于socket实现局域网实时通讯,使用swing绘制用户可视化界面,使用mysql实现用户数据的存储,通过thread多线程实现信息的实时收发,通过io流实现图片的存储。 项目分为客户端、服务端两个入口,客户端可同时...
Java绘图软件是一款基于Java Swing库开发的简单图形编辑器,它允许用户创建并操作基本图形,同时还提供了保存、复制和粘贴等实用功能。在本文中,我们将深入探讨Java Swing以及这款软件背后的关键技术。 Java Swing...
在这个"一个基于Java Swing开发的ATM机例子"中,我们可以深入理解如何使用Swing构建一个简单的模拟ATM机应用。 首先,Swing 提供了丰富的组件库,如 JButton、JLabel、JTextField、JOptionPane 等,这些组件可以...
因此,Swing 出现了,Swing 组件几乎都是轻量级组件,与重量组件相比,没有本地的对等组件,不像重量组件要在它们自己的本地不透明窗体中绘制,轻量组件在它们的重量组件的窗口中绘制。 Swing 的特点 Swing 是由 ...
startUML、java、swing startUML、java、swing startUML、java、swing
Swing作为Java图形用户界面(GUI)开发的重要框架之一,在实际应用中可能会出现速度慢和响应迟钝的问题。这类问题主要源于程序员对Swing事件处理机制的理解不足。 - **事件处理机制不当**:Swing使用事件分发线程...
在“Java Swing画随机圆”这个题目中,学生被要求利用Java Swing库来创建一个程序,该程序能够在屏幕上动态地绘制出大小、颜色和位置都随机的圆形。这涉及到Java编程基础、Swing组件的使用以及随机数生成的知识点。 ...
本篇文章将深入讲解如何使用Swing来绘制一个动态时钟。 首先,静态时钟的实现相对简单,可以通过计算角度并使用Java 2D API在画布上绘制指针和数字。但为了使时钟看起来动态更新,我们需要引入线程的概念。这是因为...
Java Swing是Java编程语言中的一个图形用户界面(GUI)工具包,它是Java Foundation Classes (JFC)的一部分,用于帮助开发者创建桌面应用程序。Swing提供了一系列组件,如按钮、文本框、菜单等,允许开发者构建功能...
在Java的Swing环境中,JFreeChart库是一个强大的工具,用于创建各种图表,包括柱状图、折线图等。本教程将详细讲解如何利用JFreeChart在Swing应用程序中实现这些功能,以及如何在折线图中动态添加线。 首先,确保你...
Java Swing 是Java平台上用于构建图形用户界面(GUI)的一个库,它是Java Foundation Classes (JFC) 的一部分。在本文中,我们将深入探讨Java Swing,并基于标题"Java Swing是一把刀"来理解它如何在程序员手中成为...
在本项目"java swing飞机大战小游戏"中,开发者使用了Swing来创建一个简单的飞机大战游戏,这对于初学者来说是一个很好的实践项目,因为它涉及到了面向对象编程、事件处理和图形绘制等基本概念。 1. **Swing组件**...