java swing画图片爱心
第一次用swing做一个可视化程序,写第一篇随笔,有写的不好的地方请多多见谅。上个星期三在网上看到一个画爱心的软件,就想着自己用java也实现一个程序,画爱心用到的数学函数知识在网上百度的,不是本人原创的。网上也有画爱心的教程,不过那些教程只能在编译器里面运行,无法把文件导出来,导出来会出现图片资源找不到的问题,只是因为资源的使用的路径有问题,被这个问题困扰了好久,在网上找到了一种方法,把图片放到src目录下,使用类的相对路径(就是以类为基准找资源的位置)。至于画爱心主要是不断重写JPanel里面的paint方法。

import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JPanel;
public class DrawLove extends JPanel{
private Image image1;
private String str1;//图片的位置,如果在src目录下,直接输入图片的位置
private double theta=0.00 ;
private double x,y;
private Graphics g;
public double getTheta() {
return theta;
}
public void setTheta(double theta) {
this.theta += theta;
}
public DrawLove(String str1){
this.str1=str1;
this.setLayout(null);
}
public void paintComponent(Graphics g)
{
try {
//通过相对路径获取图片的位置
image1=ImageIO.read(this.getClass().getClassLoader().getResourceAsStream(str1));
} catch (IOException e) {
e.printStackTrace();
}
Graphics2D g2 = (Graphics2D) g;
x= 580-15*(28*Math.pow(Math.sin(theta),3));
y= 240-15*(20*Math.cos(theta)-6*Math.cos(2*theta)-3*Math.cos(3*theta)-Math.cos(4*theta) );
g2.drawImage(image1,(int)x,(int)y,null);
}
}
上面只是画一朵花的代码,要花一个完整的爱心,我是通过线程里面的循环调用这个方法实现的。
public void run() {
while(love.getTheta()< 2*Math.PI){
love.repaint();//容器的重画
love.revalidate();
try {
Thread.sleep(time);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
frame.getContentPane().add(love);
love.setTheta(0.33);//花的数量
}
frame.getContentPane().remove(love);
}
java swing画图片爱心的更多相关文章
- Java Swing interview
http://www.careerride.com/Swing-AWT-Interview-Questions.aspx Swing interview questions and answers ...
- Java Swing 第03记 布局管理器
几种Swing常用的布局管理器 BorderLaout 它将容器分为5个部分,即东.南.西.北.中,每一个区域可以容纳一个组件,使用的时候也是通过BorderLayout中5个方位常量来确定组件所在的 ...
- Java Swing 第01记 Hello Word
首先来一个Java Swing的HelloWord程序. package cn.java.swing.chapter03; import javax.swing.JButton; import jav ...
- Java swing项目-图书管理系统(swing+mysql+jdbc) 总结
(一)java Swing的学习. (1)学习如何安装windowbuilder插件的安装. <1>在eclipse中点击help <2>在help的下拉选中选择install ...
- 【小型系统】抽奖系统-使用Java Swing完成
一.需求分析 1. 显示候选人照片和姓名. 2. 可以使用多种模式进行抽奖,包括一人单独抽奖.两人同时抽奖.三人同时抽奖. 3. 一个人可以在不同的批次的抽奖中获取一.二.三等奖,但是不能在同一批次抽 ...
- Java Swing快速构建窗体应用程序
以前接触java感觉其在桌面开发上,总是不太方便,没有一个好的拖拽界面布局工具,可以快速构建窗体. 最近学习了一下NetBeans IDE 8.1,感觉其窗体设计工具还是很不错的 , 就尝试一下做了一 ...
- paip.web数据绑定 下拉框的api设计 选择框 uapi python .net java swing jsf总结
paip.web数据绑定 下拉框的api设计 选择框 uapi python .net java swing jsf总结 ====总结: 数据绑定下拉框,Uapi 1.最好的是默认绑定..Map(k ...
- Java Swing的进化
摘 要:Swing已是一个比较老的工具集了,在美观的用户界面出来之前需要开发很长时间.它缺少一些你在开发富UI时所需的组件.幸运地是,像 Substance,SwingX及Java Look-and_ ...
- Java Swing事件处理机制
Java Swing的事件处理机制 Swing GUI启动后,Java虚拟机就启动三个线程,分别为主线程,事件派发线程(也是事件处理线程)和系统工具包线程. 主线程 :负责创建并显示该程序的初始界面: ...
随机推荐
- django数据模型中关于on_delete的使用
django数据模型中关于on_delete的使用 class BookModel(models.Model): """ 书籍表 """ b ...
- [ActionScript 3.0] 用TextField的方法getCharIndexAtPoint(x:Number, y:Number):int实现文字在固定范围内显示
有时候我们遇到一行文字过多时必须固定文字的显示范围,但由于中英文所占字节数不一样,所以不能很好的用截取字符的方式去统一显示范围的大小,用TextField的getCharIndexAtPoint(x: ...
- react的一些思考
在做好第一个需求之后,我接到了一个react写的产品,这让我异常的兴奋,终于能写react了 开始做的时候整体框架已经搭建好了,这让我有点小失落,我还以为我要开始搭框架了呢,没事,搭的也挺好的. 有了 ...
- vue培训记录
在公司做了一次vue相关的培训,自己整理了一些大纲.供大家参考学习! ### 1. 项目构成及原理 [Vue](https://cn.vuejs.org/)###* 主流框架见解及差别 * react ...
- falsk 请求钩子
请求钩子是通过装饰器的形式实现,Flask支持如下四种请求钩子:before_first_request在处理第一个请求前执行before_request在每次请求前执行如果在某修饰的函数中返回了一个 ...
- HTML-JavaScript的DOM操作-非重点部分
1.DOM的基本概念 DOM是文档对象模型,这种模型为树模型:文档是指标签文档(HTML文档),对象是指文档中每个元素:模型是指抽象划的东西. 2.Windows对象操作 一.属性和方法 属性(值或者 ...
- 如果你创建了类似于下面的 Twitter 元素,那么它相关的类定义是啥样子的?
代码: <Twitter username='tylermcginnis33'> {(user) => user === null ? <Loading /> : < ...
- Nginx反向代理与负载简单实现
反向代理 1.proxy_pass 通过反向代理把请求转发到百度 2.proxy_pass 既可以是ip地址,也可以是域名,同时还可以指定端口 3.proxy_pass 指定的地址携带了URI,如果前 ...
- C++ 创建类时常考虑的问题
目录 继承 抽象接口 标准设计模式 初始化与析构模型 定义复制构造函数和赋值操作 模板 操作符 类型转换操作符 友元 非功能性约束 本文仅以c++为例,简要说明创建一个类时我们需要考虑的问题.创建一个 ...
- JavaWeb学习笔记(二十)—— Ajax
一.Ajax概述 1.1 什么是Ajax AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”.即使用Javascript语言与 ...