
{"id":3600,"date":"2010-03-01T11:24:35","date_gmt":"2010-03-01T14:24:35","guid":{"rendered":"https:\/\/eliezerladeira.com.br\/blog\/?p=3600"},"modified":"2026-02-09T11:56:04","modified_gmt":"2026-02-09T14:56:04","slug":"como-criar-animacoes","status":"publish","type":"post","link":"https:\/\/eliezerladeira.com.br\/blog\/como-criar-animacoes\/","title":{"rendered":"Como criar anima\u00e7\u00f5es"},"content":{"rendered":"<div class=\"entry\">\n<p><code><strong>import&nbsp;<\/strong><\/code><code>java.applet.Applet;<\/code><br \/>\n<code><strong>import&nbsp;<\/strong>java.awt.Graphics;<\/code><br \/>\n<code><strong>import&nbsp;<\/strong>java.awt.event.MouseAdapter;<\/code><br \/>\n<code><strong>import&nbsp;<\/strong>java.awt.event.MouseEvent;<\/code><\/p>\n<p><code><strong>public&nbsp;class&nbsp;<\/strong>AppletAnimation&nbsp;<strong>extends&nbsp;<\/strong>Applet&nbsp;<strong>implements&nbsp;<\/strong>Runnable&nbsp;{<\/code><br \/>\n<code><strong>int&nbsp;<\/strong>frameNumber&nbsp;=&nbsp;-1;<\/code><\/p>\n<p><code><strong>int&nbsp;<\/strong>delay&nbsp;=&nbsp;100;<\/code><\/p>\n<p><code>Thread&nbsp;animatorThread;<\/code><\/p>\n<p><code><strong>boolean&nbsp;<\/strong>frozen&nbsp;=&nbsp;<strong>false<\/strong>;<\/code><\/p>\n<p><code><strong>public&nbsp;void&nbsp;<\/strong>init()&nbsp;{<\/code><br \/>\n<code>String&nbsp;str;<\/code><br \/>\n<code>addMouseListener(<strong>new&nbsp;<\/strong>MouseAdapter()&nbsp;{<\/code><br \/>\n<code><strong>public&nbsp;void&nbsp;<\/strong>mousePressed(MouseEvent&nbsp;e)&nbsp;{<\/code><br \/>\n<code><strong>if&nbsp;<\/strong>(frozen)&nbsp;{<\/code><br \/>\n<code>frozen&nbsp;=&nbsp;<strong>false<\/strong>;<\/code><br \/>\n<code>start();<\/code><br \/>\n<code>}&nbsp;<strong>else&nbsp;<\/strong>{<\/code><br \/>\n<code>frozen&nbsp;=&nbsp;<strong>true<\/strong>;<\/code><br \/>\n<code>stop();<\/code><br \/>\n<code>}<\/code><br \/>\n<code>}<\/code><br \/>\n<code>});<\/code><br \/>\n<code>}<\/code><\/p>\n<p><code><strong>public&nbsp;void&nbsp;<\/strong>start()&nbsp;{<\/code><br \/>\n<code><strong>if&nbsp;<\/strong>(!frozen)&nbsp;{<\/code><br \/>\n<code><strong>if&nbsp;<\/strong>(animatorThread&nbsp;==&nbsp;<strong>null<\/strong>)&nbsp;{<\/code><br \/>\n<code>animatorThread&nbsp;=&nbsp;<strong>new&nbsp;<\/strong>Thread(<strong>this<\/strong>);<\/code><br \/>\n<code>}<\/code><br \/>\n<code>animatorThread.start();<\/code><br \/>\n<code>}<\/code><br \/>\n<code>}<\/code><\/p>\n<p><code><strong>public&nbsp;void&nbsp;<\/strong>stop()&nbsp;{<\/code><br \/>\n<code>animatorThread&nbsp;=&nbsp;<strong>null<\/strong>;<\/code><br \/>\n<code>}<\/code><\/p>\n<p><code><strong>public&nbsp;void&nbsp;<\/strong>run()&nbsp;{<\/code><br \/>\n<code>Thread.currentThread().setPriority(Thread.MIN_PRIORITY);<\/code><\/p>\n<p><code><strong>long&nbsp;<\/strong>startTime&nbsp;=&nbsp;System.currentTimeMillis();<\/code><\/p>\n<p><code>Thread&nbsp;currentThread&nbsp;=&nbsp;Thread.currentThread();<\/code><\/p>\n<p><code><strong>while&nbsp;<\/strong>(currentThread&nbsp;==&nbsp;animatorThread)&nbsp;{<\/code><br \/>\n<code>frameNumber++;<\/code><\/p>\n<p><code>repaint();<\/code><\/p>\n<p><code><strong>try&nbsp;<\/strong>{<\/code><br \/>\n<code>startTime&nbsp;+=&nbsp;delay;<\/code><br \/>\n<code>Thread.sleep(100);<\/code><br \/>\n<code>}&nbsp;<strong>catch&nbsp;<\/strong>(InterruptedException&nbsp;e)&nbsp;{<\/code><br \/>\n<code><strong>break<\/strong>;<\/code><br \/>\n<code>}<\/code><br \/>\n<code>}<\/code><br \/>\n<code>}<\/code><\/p>\n<p><code><strong>public&nbsp;void&nbsp;<\/strong>paint(Graphics&nbsp;g)&nbsp;{<\/code><br \/>\n<code>g.drawString(\"Frame&nbsp;\"&nbsp;+&nbsp;frameNumber,&nbsp;0,&nbsp;30);<\/code><br \/>\n<code>}<\/code><br \/>\n<code>}<\/code><\/p>\n<p>&nbsp;<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>import&nbsp;java.applet.Applet; import&nbsp;java.awt.Graphics; import&nbsp;java.awt.event.MouseAdapter; import&nbsp;java.awt.event.MouseEvent; public&nbsp;class&nbsp;AppletAnimation&nbsp;extends&nbsp;Applet&nbsp;implements&nbsp;Runnable&nbsp;{ int&nbsp;frameNumber&nbsp;=&nbsp;-1; int&nbsp;delay&nbsp;=&nbsp;100; Thread&nbsp;animatorThread; boolean&nbsp;frozen&nbsp;=&nbsp;false; public&nbsp;void&nbsp;init()&nbsp;{ String&nbsp;str; addMouseListener(new&nbsp;MouseAdapter()&nbsp;{ public&nbsp;void&nbsp;mousePressed(MouseEvent&nbsp;e)&nbsp;{ if&nbsp;(frozen)&nbsp;{ frozen&nbsp;=&nbsp;false; start(); }&nbsp;else&nbsp;{ frozen&nbsp;=&nbsp;true; stop(); }<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"colormag_page_layout":"default_layout","_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"ngg_post_thumbnail":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"Como criar anima\u00e7\u00f5es","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[3508,1079],"tags":[1543,249,942,51],"class_list":["post-3600","post","type-post","status-publish","format-standard","hentry","category-programacao","category-tecnologia","tag-animacoes","tag-informatica","tag-java","tag-programacao"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":3596,"url":"https:\/\/eliezerladeira.com.br\/blog\/como-criar-animacoes-paint-e-thread\/","url_meta":{"origin":3600,"position":0},"title":"Como criar anima\u00e7\u00f5es: Paint e\u00a0Thread","author":"admin","date":"","format":false,"excerpt":"import\u00a0java.awt.Color; import\u00a0java.awt.Graphics; import\u00a0java.awt.Insets; import\u00a0java.util.Timer; import\u00a0java.util.TimerTask; import\u00a0javax.swing.JFrame; public\u00a0class\u00a0Animate\u00a0extends\u00a0JFrame\u00a0{ private\u00a0static\u00a0int\u00a0DELAY\u00a0=\u00a0100; Insets\u00a0insets; Color\u00a0colors[]\u00a0=\u00a0{\u00a0Color.RED,\u00a0Color.ORANGE,\u00a0Color.YELLOW,\u00a0Color.GREEN, Color.BLUE,\u00a0Color.MAGENTA\u00a0}; public\u00a0void\u00a0paint(Graphics\u00a0g)\u00a0{ super.paint(g); if\u00a0(insets\u00a0==\u00a0null)\u00a0{ insets\u00a0=\u00a0getInsets(); } \/\/\u00a0Calculate\u00a0each\u00a0time\u00a0in\u00a0case\u00a0of\u00a0resize int\u00a0x\u00a0=\u00a0insets.left; int\u00a0y\u00a0=\u00a0insets.top; int\u00a0width\u00a0=\u00a0getWidth()\u00a0-\u00a0insets.left\u00a0-\u00a0insets.right; int\u00a0height\u00a0=\u00a0getHeight()\u00a0-\u00a0insets.top\u00a0-\u00a0insets.bottom; int\u00a0start\u00a0=\u00a00; int\u00a0steps\u00a0=\u00a0colors.length; int\u00a0stepSize\u00a0=\u00a0360\u00a0\/\u00a0steps; synchronized\u00a0(colors)\u00a0{ for\u00a0(int\u00a0i\u00a0=\u00a00;\u00a0i\u00a0<\u00a0steps;\u00a0i++)\u00a0{ g.setColor(colors[i]); g.fillArc(x,\u00a0y,\u00a0width,\u00a0height,\u00a0start,\u00a0stepSize); start\u00a0+=\u00a0stepSize; } } } public\u00a0void\u00a0go()\u00a0{ TimerTask\u00a0task\u00a0=\u00a0new\u00a0TimerTask()\u00a0{ public\u00a0void\u00a0run()\u00a0{ Color\u00a0c\u00a0=\u00a0colors[0]; synchronized\u00a0(colors)\u00a0{ System.arraycopy(colors,\u00a01,\u00a0colors,\u00a00,\u00a0colors.length\u00a0-\u00a01); colors[colors.length\u00a0-\u00a01]\u00a0=\u00a0c; } repaint(); } }; Timer\u00a0timer\u00a0=\u00a0new\u00a0Timer(); timer.schedule(task,\u00a00,\u00a0DELAY); } public\u00a0static\u00a0void\u00a0main(String\u00a0args[])\u00a0{ Animate\u00a0f\u00a0=\u00a0new\u00a0Animate(); f.setSize(200,\u00a0200); f.show();\u2026","rel":"","context":"Em &quot;Programa\u00e7\u00e3o&quot;","block_context":{"text":"Programa\u00e7\u00e3o","link":"https:\/\/eliezerladeira.com.br\/blog\/category\/tecnologia\/programacao\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3579,"url":"https:\/\/eliezerladeira.com.br\/blog\/timer-based-animation\/","url_meta":{"origin":3600,"position":1},"title":"Timer based animation","author":"admin","date":"","format":false,"excerpt":"import\u00a0java.awt.Color; import\u00a0java.awt.Dimension; import\u00a0java.awt.Graphics; import\u00a0java.awt.Graphics2D; import\u00a0java.awt.RenderingHints; import\u00a0java.awt.event.ActionEvent; import\u00a0java.awt.event.ActionListener; import\u00a0java.awt.geom.Ellipse2D; import\u00a0javax.swing.JFrame; import\u00a0javax.swing.JPanel; import\u00a0javax.swing.Timer; public\u00a0class\u00a0TimerBasedAnimation\u00a0extends\u00a0JPanel\u00a0implements\u00a0ActionListener\u00a0{ private\u00a0Ellipse2D.Float\u00a0ellipse\u00a0=\u00a0new\u00a0Ellipse2D.Float(); private\u00a0double\u00a0esize; private\u00a0double\u00a0maxSize\u00a0=\u00a00; private\u00a0boolean\u00a0initialize\u00a0=\u00a0true; Timer\u00a0timer; ActionListener\u00a0updateProBar; public\u00a0TimerBasedAnimation()\u00a0{ setXY(20\u00a0*\u00a0Math.random(),\u00a0200,\u00a0200); timer\u00a0=\u00a0new\u00a0Timer(20,\u00a0this); timer.setInitialDelay(190); timer.start(); } public\u00a0void\u00a0setXY(double\u00a0size,\u00a0int\u00a0w,\u00a0int\u00a0h)\u00a0{ esize\u00a0=\u00a0size; ellipse.setFrame(10,\u00a010,\u00a0size,\u00a0size); } public\u00a0void\u00a0reset(int\u00a0w,\u00a0int\u00a0h)\u00a0{ maxSize\u00a0=\u00a0w\u00a0\/\u00a010; setXY(maxSize\u00a0*\u00a0Math.random(),\u00a0w,\u00a0h); } public\u00a0void\u00a0step(int\u00a0w,\u00a0int\u00a0h)\u00a0{ esize++; if\u00a0(esize\u00a0>\u00a0maxSize)\u00a0{ setXY(1,\u00a0w,\u00a0h); }\u00a0else\u00a0{ ellipse.setFrame(ellipse.getX(),\u00a0ellipse.getY(),\u00a0esize,\u00a0esize); } } public\u00a0void\u00a0render(int\u00a0w,\u00a0int\u00a0h,\u00a0Graphics2D\u00a0g2)\u00a0{ g2.setColor(Color.BLUE); g2.draw(ellipse); } public\u00a0void\u00a0paint(Graphics\u00a0g)\u00a0{ super.paintComponent(g); Graphics2D\u00a0g2\u00a0=\u00a0(Graphics2D)\u00a0g; RenderingHints\u00a0rh\u00a0=\u00a0new\u00a0RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); rh.put(RenderingHints.KEY_RENDERING,\u00a0RenderingHints.VALUE_RENDER_QUALITY);\u2026","rel":"","context":"Em &quot;Programa\u00e7\u00e3o&quot;","block_context":{"text":"Programa\u00e7\u00e3o","link":"https:\/\/eliezerladeira.com.br\/blog\/category\/tecnologia\/programacao\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3606,"url":"https:\/\/eliezerladeira.com.br\/blog\/bounce-thread\/","url_meta":{"origin":3600,"position":2},"title":"Bounce Thread","author":"admin","date":"","format":false,"excerpt":"\/** *\u00a0@version\u00a01.20\u00a01999-04-25 *\u00a0@author\u00a0Cay\u00a0Horstmann *\/ import\u00a0java.awt.Container; import\u00a0java.awt.Dimension; import\u00a0java.awt.Graphics; import\u00a0java.awt.event.ActionEvent; import\u00a0java.awt.event.ActionListener; import\u00a0java.awt.event.WindowAdapter; import\u00a0java.awt.event.WindowEvent; import\u00a0javax.swing.JButton; import\u00a0javax.swing.JFrame; import\u00a0javax.swing.JPanel; public\u00a0class\u00a0BounceThread\u00a0{ public\u00a0static\u00a0void\u00a0main(String[]\u00a0args)\u00a0{ JFrame\u00a0frame\u00a0=\u00a0new\u00a0BounceThreadFrame(); frame.show(); } } class\u00a0BounceThreadFrame\u00a0extends\u00a0JFrame\u00a0{ public\u00a0BounceThreadFrame()\u00a0{ setSize(300,\u00a0200); setTitle(\"Bounce\"); addWindowListener(new\u00a0WindowAdapter()\u00a0{ public\u00a0void\u00a0windowClosing(WindowEvent\u00a0e)\u00a0{ System.exit(0); } }); Container\u00a0contentPane\u00a0=\u00a0getContentPane(); canvas\u00a0=\u00a0new\u00a0JPanel(); contentPane.add(canvas,\u00a0\"Center\"); JPanel\u00a0p\u00a0=\u00a0new\u00a0JPanel(); addButton(p,\u00a0\"Start\",\u00a0new\u00a0ActionListener()\u00a0{ public\u00a0void\u00a0actionPerformed(ActionEvent\u00a0evt)\u00a0{ Ball\u00a0b\u00a0=\u00a0new\u00a0Ball(canvas); b.start(); } }); addButton(p,\u00a0\"Close\",\u00a0new\u00a0ActionListener()\u00a0{ public\u00a0void\u00a0actionPerformed(ActionEvent\u00a0evt)\u00a0{ canvas.setVisible(false); System.exit(0); } }); contentPane.add(p,\u00a0\"South\"); } public\u00a0void\u00a0addButton(Container\u00a0c,\u00a0String\u00a0title,\u00a0ActionListener\u00a0a)\u00a0{ JButton\u00a0b\u00a0=\u00a0new\u00a0JButton(title); c.add(b);\u2026","rel":"","context":"Em &quot;Programa\u00e7\u00e3o&quot;","block_context":{"text":"Programa\u00e7\u00e3o","link":"https:\/\/eliezerladeira.com.br\/blog\/category\/tecnologia\/programacao\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3577,"url":"https:\/\/eliezerladeira.com.br\/blog\/is-event-dispatcher-thread\/","url_meta":{"origin":3600,"position":3},"title":"Is Event Dispatcher\u00a0Thread","author":"admin","date":"","format":false,"excerpt":"import\u00a0java.awt.Color; import\u00a0java.awt.Component; import\u00a0java.awt.Dimension; import\u00a0java.awt.event.ActionEvent; import\u00a0java.awt.event.ActionListener; import\u00a0java.util.Random; import\u00a0javax.swing.AbstractAction; import\u00a0javax.swing.ButtonGroup; import\u00a0javax.swing.JButton; import\u00a0javax.swing.JFrame; import\u00a0javax.swing.JLabel; import\u00a0javax.swing.JPanel; import\u00a0javax.swing.JRadioButton; import\u00a0javax.swing.JTable; import\u00a0javax.swing.SwingUtilities; import\u00a0javax.swing.table.AbstractTableModel; import\u00a0javax.swing.table.TableCellRenderer; public\u00a0class\u00a0IsEDTExample\u00a0extends\u00a0JPanel\u00a0{ private\u00a0boolean\u00a0keepRunning; private\u00a0static\u00a0int\u00a0RED\u00a0=\u00a00; private\u00a0static\u00a0int\u00a0BLUE\u00a0=\u00a01; private\u00a0static\u00a0int\u00a0GREEN\u00a0=\u00a02; private\u00a0static\u00a0int\u00a0VARIABLE\u00a0=\u00a03; private\u00a0static\u00a0int\u00a0SIZE\u00a0=\u00a03; private\u00a0int\u00a0threadShade; private\u00a0ColorTableModel\u00a0tableModel=\u00a0new\u00a0ColorTableModel(); private\u00a0Thread\u00a0colorShadeThread; public\u00a0IsEDTExample()\u00a0{ JTable\u00a0table\u00a0=\u00a0new\u00a0JTable(tableModel); table.setRowHeight(100); table.setDefaultRenderer(Object.class,\u00a0new\u00a0ColorRenderer()); add(table); add(new\u00a0JLabel(\"Thread\u00a0Color\u00a0Shade:\")); ButtonGroup\u00a0group\u00a0=\u00a0new\u00a0ButtonGroup(); JRadioButton\u00a0redOption\u00a0=\u00a0new\u00a0JRadioButton(\"Red\"); group.add(redOption); redOption.addActionListener(new\u00a0ActionListener()\u00a0{ public\u00a0void\u00a0actionPerformed(ActionEvent\u00a0e)\u00a0{ threadShade\u00a0=\u00a0RED; } }); JRadioButton\u00a0blueOption\u00a0=\u00a0new\u00a0JRadioButton(\"Blue\"); group.add(blueOption); blueOption.addActionListener(new\u00a0ActionListener()\u00a0{ public\u00a0void\u00a0actionPerformed(ActionEvent\u00a0e)\u00a0{ threadShade\u00a0=\u00a0BLUE; } }); JRadioButton\u00a0greenOption\u00a0=\u00a0new\u00a0JRadioButton(\"Green\"); group.add(greenOption);\u2026","rel":"","context":"Em &quot;Programa\u00e7\u00e3o&quot;","block_context":{"text":"Programa\u00e7\u00e3o","link":"https:\/\/eliezerladeira.com.br\/blog\/category\/tecnologia\/programacao\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3585,"url":"https:\/\/eliezerladeira.com.br\/blog\/font-size-animation\/","url_meta":{"origin":3600,"position":4},"title":"Font size animation","author":"admin","date":"","format":false,"excerpt":"import\u00a0java.awt.Font; import\u00a0java.awt.FontMetrics; import\u00a0java.awt.Graphics; import\u00a0java.awt.Graphics2D; import\u00a0java.awt.event.ActionEvent; import\u00a0java.awt.event.ActionListener; import\u00a0javax.swing.JFrame; import\u00a0javax.swing.JPanel; import\u00a0javax.swing.Timer; public\u00a0class\u00a0FontSizeAnimation\u00a0extends\u00a0JPanel\u00a0implements\u00a0ActionListener\u00a0{ Timer\u00a0timer; int\u00a0x\u00a0=\u00a01; float\u00a0alpha\u00a0=\u00a01; public\u00a0FontSizeAnimation()\u00a0{ timer\u00a0=\u00a0new\u00a0Timer(8,\u00a0this); timer.setInitialDelay(190); timer.start(); } public\u00a0void\u00a0paint(Graphics\u00a0g)\u00a0{ super.paintComponent(g); Graphics2D\u00a0g2d\u00a0=\u00a0(Graphics2D)\u00a0g; Font\u00a0font\u00a0=\u00a0new\u00a0Font(\"Dialog\",\u00a0Font.PLAIN,\u00a0x); g2d.setFont(font); FontMetrics\u00a0fm\u00a0=\u00a0g2d.getFontMetrics(); String\u00a0s\u00a0=\u00a0\"Java\"; int\u00a0w\u00a0=\u00a0(int)\u00a0getSize().getWidth(); int\u00a0h\u00a0=\u00a0(int)\u00a0getSize().getHeight(); int\u00a0stringWidth\u00a0=\u00a0fm.stringWidth(s); g2d.drawString(s,\u00a0(w\u00a0-\u00a0stringWidth)\u00a0\/\u00a02,\u00a0h\u00a0\/\u00a02); } public\u00a0static\u00a0void\u00a0main(String[]\u00a0args)\u00a0{ JFrame\u00a0frame\u00a0=\u00a0new\u00a0JFrame(\"FontSizeAnimation\"); frame.add(new\u00a0FontSizeAnimation()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(400,\u00a0300); frame.setLocationRelativeTo(null); frame.setVisible(true); } public\u00a0void\u00a0actionPerformed(ActionEvent\u00a0e)\u00a0{ x\u00a0+=\u00a01; alpha\u00a0-=\u00a00.0001; repaint(); } } \u00a0","rel":"","context":"Em &quot;Programa\u00e7\u00e3o&quot;","block_context":{"text":"Programa\u00e7\u00e3o","link":"https:\/\/eliezerladeira.com.br\/blog\/category\/tecnologia\/programacao\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3611,"url":"https:\/\/eliezerladeira.com.br\/blog\/animation-bounce\/","url_meta":{"origin":3600,"position":5},"title":"Animation: bounce","author":"admin","date":"","format":false,"excerpt":"import\u00a0java.awt.BasicStroke; import\u00a0java.awt.BorderLayout; import\u00a0java.awt.Checkbox; import\u00a0java.awt.Color; import\u00a0java.awt.Dimension; import\u00a0java.awt.Font; import\u00a0java.awt.Frame; import\u00a0java.awt.GradientPaint; import\u00a0java.awt.Graphics; import\u00a0java.awt.Graphics2D; import\u00a0java.awt.Image; import\u00a0java.awt.Label; import\u00a0java.awt.Panel; import\u00a0java.awt.RenderingHints; import\u00a0java.awt.Shape; import\u00a0java.awt.Stroke; import\u00a0java.awt.event.ComponentAdapter; import\u00a0java.awt.event.ComponentEvent; import\u00a0java.awt.event.ItemEvent; import\u00a0java.awt.event.ItemListener; import\u00a0java.awt.font.FontRenderContext; import\u00a0java.awt.font.GlyphVector; import\u00a0java.awt.geom.GeneralPath; import\u00a0java.awt.geom.Rectangle2D; import\u00a0java.text.NumberFormat; import\u00a0java.util.Random; import\u00a0javax.swing.JFrame; import\u00a0javax.swing.JPanel; public\u00a0class\u00a0Bouncer\u00a0extends\u00a0JPanel\u00a0implements\u00a0Runnable\u00a0{ private\u00a0boolean\u00a0trucking\u00a0=\u00a0true; private\u00a0long[]\u00a0previousTimes;\u00a0\/\/\u00a0milliseconds private\u00a0int\u00a0previousIndex; private\u00a0boolean\u00a0previousFilled; private\u00a0double\u00a0frameRate;\u00a0\/\/\u00a0frames\u00a0per\u00a0second private\u00a0Image\u00a0image; public\u00a0static\u00a0void\u00a0main(String[]\u00a0args)\u00a0{ final\u00a0Bouncer\u00a0bouncer\u00a0=\u00a0new\u00a0Bouncer(); Frame\u00a0f\u00a0=\u00a0new\u00a0AnimationFrame(bouncer); f.setFont(new\u00a0Font(\"Serif\",\u00a0Font.PLAIN,\u00a012)); f.setSize(200,\u00a0200); Panel\u00a0controls\u00a0=\u00a0new\u00a0Panel(); controls.add(bouncer.createCheckbox(\"Anti.\",\u00a0Bouncer.ANTIALIASING)); controls.add(bouncer.createCheckbox(\"Trans.\",\u00a0Bouncer.TRANSFORM)); controls.add(bouncer.createCheckbox(\"Gradient\",\u00a0Bouncer.GRADIENT)); controls.add(bouncer.createCheckbox(\"Outline\",\u00a0Bouncer.OUTLINE)); controls.add(bouncer.createCheckbox(\"Dotted\",\u00a0Bouncer.DOTTED)); controls.add(bouncer.createCheckbox(\"Axes\",\u00a0Bouncer.AXES)); controls.add(bouncer.createCheckbox(\"Clip\",\u00a0Bouncer.CLIP)); f.add(controls,\u00a0BorderLayout.NORTH); f.setVisible(true);\u2026","rel":"","context":"Em &quot;Programa\u00e7\u00e3o&quot;","block_context":{"text":"Programa\u00e7\u00e3o","link":"https:\/\/eliezerladeira.com.br\/blog\/category\/tecnologia\/programacao\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/posts\/3600","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/comments?post=3600"}],"version-history":[{"count":1,"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/posts\/3600\/revisions"}],"predecessor-version":[{"id":3601,"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/posts\/3600\/revisions\/3601"}],"wp:attachment":[{"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/media?parent=3600"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/categories?post=3600"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/tags?post=3600"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}