使用虚线,线程(或Swing Timer)&将它们与repaint()结合起来,并对破折号的起点和终点进行一些调整 – 然后就可以了.

package test;

import java.awt.BasicStroke;

import java.awt.Color;

import java.awt.Graphics2D;

import java.awt.Shape;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.geom.Rectangle2D;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

import javax.imageio.ImageIO;

import javax.swing.ImageIcon;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.SwingUtilities;

import javax.swing.Timer;

public class AnimatedStroke {

public static void main(String[] args) {

SwingUtilities.invokeLater(new Runnable() {

public void run() {

BasicStroke dashedStroke;

final int width = 100;

final int height = 30;

final BufferedImage image = new BufferedImage(

width,height,BufferedImage.TYPE_INT_ARGB);

final JLabel label = new JLabel(new ImageIcon(image));

int pad = 5;

final Shape rectangle = new Rectangle2D.Double(

(double)pad,(double)pad,

(double)(width-2*pad),

(double)(height-2*pad));

ActionListener listener = new ActionListener() {

float dashPhase = 0f;

float dash[] = {5.0f,5.0f};

@Override

public void actionPerformed(ActionEvent ae) {

dashPhase += 9.0f;

BasicStroke dashedStroke = new BasicStroke(

1.5f,

BasicStroke.CAP_ROUND,

BasicStroke.JOIN_MITER,

1.5f, //miter limit

dash,

dashPhase

);

Graphics2D g = image.createGraphics();

g.setColor(Color.WHITE);

g.fillRect(0,0,width,height);

g.setColor(Color.BLACK);

g.setStroke(dashedStroke);

g.draw(rectangle);

g.dispose();

label.repaint();

/*

if (dashPhase<100f) {

try {

ImageIO.write(

image,

"PNG",

new File("img" + dashPhase + ".png"));

} catch(IOException ioe) {

// we tried

}

}*/

}

};

Timer timer = new Timer(40, listener);

timer.start();

JOptionPane.showMessageDialog(null, label);

}

});

}

}

java basicstroke_使用java.awt.BasicStroke动画化虚线相关推荐

  1. java毕业设计——基于java+Java awt+swing的愤怒的小鸟游戏设计与实现(毕业论文+程序源码)——愤怒的小鸟游戏

    基于java+Java awt+swing的愤怒的小鸟游戏设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+Java awt+swing的愤怒的小鸟游戏设计与实现,文章末尾附有本毕 ...

  2. Java函数式折叠,循环,记忆化效率初识

    Java函数式折叠,循环,记忆化效率初识 最近在啃函数式编程思想,真的,感觉这本书让我受益匪浅,而且很有可能,这本书锁涵盖的知识会成为我实现梦想的必不可少的基石之一. 在Java中实现函数式编程的一个 ...

  3. java中接口适配器实现,12.1.8 Java中的应用-AWT事件适配器(接口的适配器模式)...

    12.1.8  Java中的应用-AWT事件适配器(接口的适配器模式) 从以上的学习我们已经了解到,基于接口的适配器模式是采用抽象化接口的方式,来达到节省接口函数的目的,这一特性特别适合于Java A ...

  4. 【Java Web开发学习】Spring4条件化的bean

    [Java Web开发学习]Spring4条件化的bean 转载:https://www.cnblogs.com/yangchongxing/p/9071960.html Spring4引入了@Con ...

  5. 报错,java.lang.NoSuchMethodException: java.awt.print.Pageable

    问题: 2020-11-06 17:25:30.551 ERROR 5884 --- [io-13000-exec-8] o.a.c.c.C.[.[.[/].[dispatcherServlet]   ...

  6. JAVA工具篇--java.awt.Robot模拟微信批量添加好友

    前言:java.awt.Robot可以控制鼠标和键盘,本文基于此通过模拟认为添加微信好友的过程实现批量添加微信好友,并最终输出微信号/手机号是否有好友及好友的基本信息,本文代码示例禁用学习交流使用: ...

  7. java searchview_Java-Android:对SearchView进行动画处理

    我正在尝试实现动画搜索视图(带有简单的扩展/折叠动画),但是该论坛中的所有答案均不起作用. android:id="@+id/action_search" android:orde ...

  8. java小程序:控制台字符动画

    java小程序:控制台字符动画 说在前面 程序效果 代码呈现 说在前面 大一软件工程在读,java萌新一只,第一次写博客,技术很菜勿喷.如有错误欢迎指出! 这个小程序是给朋友的生日礼物,耗时半天,实际 ...

  9. java applet程序设计,Java Applet程序设计基础

    Java Applet程序设计基础 Java Applet 是用Java 语言编写的一些小应用程序,这些程序是直接嵌入到页面中,由支持Java的浏览器(IE 或 Nescape)解释执行能够产生特殊效 ...

最新文章

  1. 【综述】MV3D-Net、AVOD-Net 用于自动驾驶的多视图3D目标检测网络
  2. 微软向.NET开发者开放Windows Phone 7 Market
  3. JDK5的一些新特性
  4. java输入一个数字输出_java 输入一个数字,反转输出这个数字的值(实现方法)
  5. Docker 入门(2)技术实现和核心组成
  6. LeetCode 39. 组合总和(排列组合 回溯)
  7. (06)VHDL实现计数器
  8. dedecms进入mysql后台_DEDECMS 爆严重安全漏洞 免账号密码直接进入后台
  9. 宁愿月薪1万招新人,却不愿给月薪5千的老员工涨薪
  10. 张尧学等人获奖,理由不充分
  11. 计算机音乐音序是什么意思,什么叫音序?什么叫音节?
  12. The slave I/O thread stops because master and slave have equal MySQL server UUID
  13. MTK平台产线生产标记位功能
  14. docker安装kong和konga详细说明
  15. 继电器控制模块的一些知识
  16. 修改织梦dedecms后台默认admin账号的方法
  17. 机器学习-无监督学习-聚类:聚类方法(一)--- k-Means(k-均值)算法,k-Means++算法【使用最大期望值算法(EM算法)来求解】
  18. DiskPart 常用操作【Windows】
  19. Java开源企业开发平台教程:待办挂起业务场景实现
  20. 迈向更灵活,贝壳 OLAP 平台架构演进历程

热门文章

  1. 初窥CSRF攻击方式以及Flask-WTF
  2. 朴素贝叶斯与逻辑回归区别
  3. Babel 快速入门
  4. 低代码技术与市场(Mendix与 OutSystems)
  5. Jittor框架API
  6. 会议重点介绍芯片设计中的人工智能
  7. 机器人导航两篇顶级会议论文解析
  8. C++ while 循环与 do...while 循环
  9. TypeError: Total() missing 1 required positional argument: ‘self‘
  10. TypeError: can only concatenate str (not “float“) to str