
{"id":3577,"date":"2010-02-09T10:49:23","date_gmt":"2010-02-09T12:49:23","guid":{"rendered":"https:\/\/eliezerladeira.com.br\/blog\/?p=3577"},"modified":"2026-02-09T11:56:04","modified_gmt":"2026-02-09T14:56:04","slug":"is-event-dispatcher-thread","status":"publish","type":"post","link":"https:\/\/eliezerladeira.com.br\/blog\/is-event-dispatcher-thread\/","title":{"rendered":"Is Event Dispatcher\u00a0Thread"},"content":{"rendered":"<div id=\"post-589\" class=\"post-589 post type-post status-publish format-standard hentry\">\n<div class=\"entry\">\n<p><code><strong>import&nbsp;<\/strong><\/code><code>java.awt.Color;<\/code><br \/>\n<code><strong>import&nbsp;<\/strong>java.awt.Component;<\/code><br \/>\n<code><strong>import&nbsp;<\/strong>java.awt.Dimension;<\/code><br \/>\n<code><strong>import&nbsp;<\/strong>java.awt.event.ActionEvent;<\/code><br \/>\n<code><strong>import&nbsp;<\/strong>java.awt.event.ActionListener;<\/code><br \/>\n<code><strong>import&nbsp;<\/strong>java.util.Random;<\/code><\/p>\n<p><code><strong>import&nbsp;<\/strong>javax.swing.AbstractAction;<\/code><br \/>\n<code><strong>import&nbsp;<\/strong>javax.swing.ButtonGroup;<\/code><br \/>\n<code><strong>import&nbsp;<\/strong>javax.swing.JButton;<\/code><br \/>\n<code><strong>import&nbsp;<\/strong>javax.swing.JFrame;<\/code><br \/>\n<code><strong>import&nbsp;<\/strong>javax.swing.JLabel;<\/code><br \/>\n<code><strong>import&nbsp;<\/strong>javax.swing.JPanel;<\/code><br \/>\n<code><strong>import&nbsp;<\/strong>javax.swing.JRadioButton;<\/code><br \/>\n<code><strong>import&nbsp;<\/strong>javax.swing.JTable;<\/code><br \/>\n<code><strong>import&nbsp;<\/strong>javax.swing.SwingUtilities;<\/code><br \/>\n<code><strong>import&nbsp;<\/strong>javax.swing.table.AbstractTableModel;<\/code><br \/>\n<code><strong>import&nbsp;<\/strong>javax.swing.table.TableCellRenderer;<\/code><\/p>\n<p><code><strong>public&nbsp;class&nbsp;<\/strong>IsEDTExample&nbsp;<strong>extends&nbsp;<\/strong>JPanel&nbsp;{<\/code><br \/>\n<code><strong>private&nbsp;boolean&nbsp;<\/strong>keepRunning;<\/code><\/p>\n<p><code><strong>private&nbsp;static&nbsp;int&nbsp;<\/strong>RED&nbsp;=&nbsp;0;<\/code><\/p>\n<p><code><strong>private&nbsp;static&nbsp;int&nbsp;<\/strong>BLUE&nbsp;=&nbsp;1;<\/code><\/p>\n<p><code><strong>private&nbsp;static&nbsp;int&nbsp;<\/strong>GREEN&nbsp;=&nbsp;2;<\/code><\/p>\n<p><code><strong>private&nbsp;static&nbsp;int&nbsp;<\/strong>VARIABLE&nbsp;=&nbsp;3;<\/code><\/p>\n<p><code><strong>private&nbsp;static&nbsp;int&nbsp;<\/strong>SIZE&nbsp;=&nbsp;3;<\/code><\/p>\n<p><code><strong>private&nbsp;int&nbsp;<\/strong>threadShade;<\/code><\/p>\n<p><code><strong>private&nbsp;<\/strong>ColorTableModel&nbsp;tableModel=&nbsp;<strong>new&nbsp;<\/strong>ColorTableModel();<\/code><\/p>\n<p><code><strong>private&nbsp;<\/strong>Thread&nbsp;colorShadeThread;<\/code><\/p>\n<p><code><strong>public&nbsp;<\/strong>IsEDTExample()&nbsp;{<\/code><br \/>\n<code>JTable&nbsp;table&nbsp;=&nbsp;<strong>new&nbsp;<\/strong>JTable(tableModel);<\/code><br \/>\n<code>table.setRowHeight(100);<\/code><br \/>\n<code>table.setDefaultRenderer(Object.class,&nbsp;<strong>new&nbsp;<\/strong>ColorRenderer());<\/code><br \/>\n<code>add(table);<\/code><\/p>\n<p><code>add(<strong>new&nbsp;<\/strong>JLabel(\"Thread&nbsp;Color&nbsp;Shade:\"));<\/code><br \/>\n<code>ButtonGroup&nbsp;group&nbsp;=&nbsp;<strong>new&nbsp;<\/strong>ButtonGroup();<\/code><br \/>\n<code>JRadioButton&nbsp;redOption&nbsp;=&nbsp;<strong>new&nbsp;<\/strong>JRadioButton(\"Red\");<\/code><br \/>\n<code>group.add(redOption);<\/code><br \/>\n<code>redOption.addActionListener(<strong>new&nbsp;<\/strong>ActionListener()&nbsp;{<\/code><br \/>\n<code><strong>public&nbsp;void&nbsp;<\/strong>actionPerformed(ActionEvent&nbsp;e)&nbsp;{<\/code><br \/>\n<code>threadShade&nbsp;=&nbsp;RED;<\/code><br \/>\n<code>}<\/code><br \/>\n<code>});<\/code><\/p>\n<p><code>JRadioButton&nbsp;blueOption&nbsp;=&nbsp;<strong>new&nbsp;<\/strong>JRadioButton(\"Blue\");<\/code><br \/>\n<code>group.add(blueOption);<\/code><br \/>\n<code>blueOption.addActionListener(<strong>new&nbsp;<\/strong>ActionListener()&nbsp;{<\/code><br \/>\n<code><strong>public&nbsp;void&nbsp;<\/strong>actionPerformed(ActionEvent&nbsp;e)&nbsp;{<\/code><br \/>\n<code>threadShade&nbsp;=&nbsp;BLUE;<\/code><br \/>\n<code>}<\/code><br \/>\n<code>});<\/code><\/p>\n<p><code>JRadioButton&nbsp;greenOption&nbsp;=&nbsp;<strong>new&nbsp;<\/strong>JRadioButton(\"Green\");<\/code><br \/>\n<code>group.add(greenOption);<\/code><br \/>\n<code>greenOption.addActionListener(<strong>new&nbsp;<\/strong>ActionListener()&nbsp;{<\/code><br \/>\n<code><strong>public&nbsp;void&nbsp;<\/strong>actionPerformed(ActionEvent&nbsp;e)&nbsp;{<\/code><br \/>\n<code>threadShade&nbsp;=&nbsp;GREEN;<\/code><br \/>\n<code>}<\/code><br \/>\n<code>});<\/code><\/p>\n<p><code>redOption.setSelected(<strong>true<\/strong>);<\/code><br \/>\n<code><strong>this<\/strong>.threadShade&nbsp;=&nbsp;RED;<\/code><\/p>\n<p><code>add(redOption);<\/code><br \/>\n<code>add(greenOption);<\/code><br \/>\n<code>add(blueOption);<\/code><\/p>\n<p><code>add(<strong>new&nbsp;<\/strong>JButton(<strong>new&nbsp;<\/strong>RandomColorAction()));<\/code><\/p>\n<p><code><strong>this<\/strong>.keepRunning&nbsp;=&nbsp;<strong>true<\/strong>;<\/code><br \/>\n<code><strong>this<\/strong>.colorShadeThread&nbsp;=&nbsp;<strong>new&nbsp;<\/strong>Thread(<strong>new&nbsp;<\/strong>RandomColorShadeRunnable());<\/code><br \/>\n<code><strong>this<\/strong>.colorShadeThread.start();<\/code><br \/>\n<code>}<\/code><\/p>\n<p><code><strong>private&nbsp;class&nbsp;<\/strong>RandomColorAction&nbsp;<strong>extends&nbsp;<\/strong>AbstractAction&nbsp;{<\/code><br \/>\n<code><strong>public&nbsp;<\/strong>RandomColorAction()&nbsp;{<\/code><br \/>\n<code><strong>super<\/strong>(\"Create&nbsp;Random&nbsp;Color\");<\/code><br \/>\n<code>}<\/code><\/p>\n<p><code><strong>public&nbsp;void&nbsp;<\/strong>actionPerformed(ActionEvent&nbsp;e)&nbsp;{<\/code><br \/>\n<code>IsEDTExample.<strong>this<\/strong>.tableModel.generateRandomColor(VARIABLE);<\/code><br \/>\n<code>}<\/code><br \/>\n<code>}<\/code><\/p>\n<p><code><strong>private&nbsp;class&nbsp;<\/strong>ColorTableModel&nbsp;<strong>extends&nbsp;<\/strong>AbstractTableModel&nbsp;{<\/code><br \/>\n<code><strong>private&nbsp;<\/strong>Color[][]&nbsp;colors&nbsp;=&nbsp;<strong>new&nbsp;<\/strong>Color[3][3];<\/code><\/p>\n<p><code><strong>public&nbsp;<\/strong>ColorTableModel()&nbsp;{<\/code><br \/>\n<code><strong>for&nbsp;<\/strong>(<strong>int&nbsp;<\/strong>i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;SIZE;&nbsp;i++)&nbsp;{<\/code><br \/>\n<code><strong>for&nbsp;<\/strong>(<strong>int&nbsp;<\/strong>x&nbsp;=&nbsp;0;&nbsp;x&nbsp;&lt;&nbsp;SIZE;&nbsp;x++)&nbsp;{<\/code><br \/>\n<code>colors[i][x]&nbsp;=&nbsp;Color.white;<\/code><br \/>\n<code>}<\/code><br \/>\n<code>}<\/code><br \/>\n<code>}<\/code><\/p>\n<p><code><strong>public&nbsp;int&nbsp;<\/strong>getRowCount()&nbsp;{<\/code><br \/>\n<code><strong>return&nbsp;<\/strong>SIZE;<\/code><br \/>\n<code>}<\/code><\/p>\n<p><code><strong>public&nbsp;int&nbsp;<\/strong>getColumnCount()&nbsp;{<\/code><br \/>\n<code><strong>return&nbsp;<\/strong>SIZE;<\/code><br \/>\n<code>}<\/code><\/p>\n<p><code><strong>public&nbsp;<\/strong>Object&nbsp;getValueAt(<strong>int&nbsp;<\/strong>rowIndex,&nbsp;<strong>int&nbsp;<\/strong>columnIndex)&nbsp;{<\/code><br \/>\n<code><strong>return&nbsp;<\/strong>colors[rowIndex][columnIndex];<\/code><br \/>\n<code>}<\/code><\/p>\n<p><code><strong>public&nbsp;void&nbsp;<\/strong>generateRandomColor(<strong>int&nbsp;<\/strong>type)&nbsp;{<\/code><br \/>\n<code>Random&nbsp;random&nbsp;=&nbsp;<strong>new&nbsp;<\/strong>Random(System.currentTimeMillis());<\/code><br \/>\n<code><strong>final&nbsp;int&nbsp;<\/strong>row&nbsp;=&nbsp;random.nextInt(SIZE);<\/code><br \/>\n<code><strong>final&nbsp;int&nbsp;<\/strong>column&nbsp;=&nbsp;random.nextInt(SIZE);<\/code><br \/>\n<code><strong>final&nbsp;<\/strong>Color&nbsp;color;<\/code><br \/>\n<code><strong>if&nbsp;<\/strong>(type&nbsp;==&nbsp;RED)&nbsp;{<\/code><br \/>\n<code>color&nbsp;=&nbsp;<strong>new&nbsp;<\/strong>Color(random.nextInt(256),&nbsp;0,&nbsp;0);<\/code><br \/>\n<code>}&nbsp;<strong>else&nbsp;if&nbsp;<\/strong>(type&nbsp;==&nbsp;BLUE)&nbsp;{<\/code><br \/>\n<code>color&nbsp;=&nbsp;<strong>new&nbsp;<\/strong>Color(0,&nbsp;0,&nbsp;random.nextInt(256));<\/code><br \/>\n<code>}&nbsp;<strong>else&nbsp;if&nbsp;<\/strong>(type&nbsp;==&nbsp;GREEN)&nbsp;{<\/code><br \/>\n<code>color&nbsp;=&nbsp;<strong>new&nbsp;<\/strong>Color(0,&nbsp;random.nextInt(256),&nbsp;0);<\/code><br \/>\n<code>}&nbsp;<strong>else&nbsp;<\/strong>{<\/code><br \/>\n<code>color&nbsp;=&nbsp;<strong>new&nbsp;<\/strong>Color(random.nextInt(256),&nbsp;random.nextInt(256),&nbsp;random.nextInt(256));<\/code><br \/>\n<code>}<\/code><\/p>\n<p><code><strong>if&nbsp;<\/strong>(SwingUtilities.isEventDispatchThread())&nbsp;{<\/code><br \/>\n<code>colors[row][column]&nbsp;=&nbsp;color;<\/code><br \/>\n<code>fireTableCellUpdated(row,&nbsp;column);<\/code><br \/>\n<code>}&nbsp;<strong>else&nbsp;<\/strong>{<\/code><br \/>\n<code>SwingUtilities.invokeLater(<strong>new&nbsp;<\/strong>Runnable()&nbsp;{<\/code><br \/>\n<code><strong>public&nbsp;void&nbsp;<\/strong>run()&nbsp;{<\/code><br \/>\n<code>colors[row][column]&nbsp;=&nbsp;color;<\/code><br \/>\n<code>fireTableCellUpdated(row,&nbsp;column);<\/code><br \/>\n<code>}<\/code><br \/>\n<code>});<\/code><br \/>\n<code>}<\/code><br \/>\n<code>}<\/code><br \/>\n<code>}<\/code><\/p>\n<p><code><strong>private&nbsp;class&nbsp;<\/strong>ColorRenderer&nbsp;<strong>implements&nbsp;<\/strong>TableCellRenderer&nbsp;{<\/code><br \/>\n<code><strong>private&nbsp;<\/strong>JLabel&nbsp;label;<\/code><\/p>\n<p><code><strong>public&nbsp;<\/strong>ColorRenderer()&nbsp;{<\/code><br \/>\n<code>label&nbsp;=&nbsp;<strong>new&nbsp;<\/strong>JLabel();<\/code><br \/>\n<code>label.setOpaque(<strong>true<\/strong>);<\/code><br \/>\n<code>label.setPreferredSize(<strong>new&nbsp;<\/strong>Dimension(100,&nbsp;100));<\/code><br \/>\n<code>}<\/code><\/p>\n<p><code><strong>public&nbsp;<\/strong>Component&nbsp;getTableCellRendererComponent(JTable&nbsp;table,&nbsp;Object&nbsp;value,&nbsp;<strong>boolean&nbsp;<\/strong>isSelected,<\/code><br \/>\n<code><strong>boolean&nbsp;<\/strong>hasFocus,&nbsp;<strong>int&nbsp;<\/strong>row,&nbsp;<strong>int&nbsp;<\/strong>column)&nbsp;{<\/code><br \/>\n<code>label.setBackground((Color)&nbsp;value);<\/code><br \/>\n<code><strong>return&nbsp;<\/strong>label;<\/code><br \/>\n<code>}<\/code><br \/>\n<code>}<\/code><\/p>\n<p><code><strong>private&nbsp;class&nbsp;<\/strong>RandomColorShadeRunnable&nbsp;<strong>implements&nbsp;<\/strong>Runnable&nbsp;{<\/code><br \/>\n<code><strong>public&nbsp;void&nbsp;<\/strong>run()&nbsp;{<\/code><br \/>\n<code><strong>while&nbsp;<\/strong>(keepRunning)&nbsp;{<\/code><br \/>\n<code>tableModel.generateRandomColor(threadShade);<\/code><br \/>\n<code><strong>try&nbsp;<\/strong>{<\/code><br \/>\n<code>Thread.sleep(500);<\/code><br \/>\n<code>}&nbsp;<strong>catch&nbsp;<\/strong>(InterruptedException&nbsp;e)&nbsp;{<\/code><br \/>\n<code>}<\/code><br \/>\n<code>}<\/code><br \/>\n<code>}<\/code><br \/>\n<code>}<\/code><\/p>\n<p><code><strong>public&nbsp;static&nbsp;void&nbsp;<\/strong>main(String[]&nbsp;a)&nbsp;{<\/code><br \/>\n<code>JFrame&nbsp;f&nbsp;=&nbsp;<strong>new&nbsp;<\/strong>JFrame(\"Is&nbsp;Event&nbsp;Dispatch&nbsp;Thread&nbsp;Example\");<\/code><br \/>\n<code>f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);<\/code><br \/>\n<code>f.add(<strong>new&nbsp;<\/strong>IsEDTExample());<\/code><br \/>\n<code>f.pack();<\/code><br \/>\n<code>f.setVisible(<strong>true<\/strong>);<\/code><br \/>\n<code>}<\/code><\/p>\n<p><code>}<\/code><\/p>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>import&nbsp;java.awt.Color; import&nbsp;java.awt.Component; import&nbsp;java.awt.Dimension; import&nbsp;java.awt.event.ActionEvent; import&nbsp;java.awt.event.ActionListener; import&nbsp;java.util.Random; import&nbsp;javax.swing.AbstractAction; import&nbsp;javax.swing.ButtonGroup; import&nbsp;javax.swing.JButton; import&nbsp;javax.swing.JFrame; import&nbsp;javax.swing.JLabel; import&nbsp;javax.swing.JPanel; import&nbsp;javax.swing.JRadioButton; import&nbsp;javax.swing.JTable; import&nbsp;javax.swing.SwingUtilities; import&nbsp;javax.swing.table.AbstractTableModel; import&nbsp;javax.swing.table.TableCellRenderer; public&nbsp;class&nbsp;IsEDTExample&nbsp;extends&nbsp;JPanel&nbsp;{ private&nbsp;boolean&nbsp;keepRunning; private&nbsp;static&nbsp;int&nbsp;RED&nbsp;=&nbsp;0;<\/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":"Is Event Dispatcher\u00a0Thread","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":[249,942,51],"class_list":["post-3577","post","type-post","status-publish","format-standard","hentry","category-programacao","category-tecnologia","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":3592,"url":"https:\/\/eliezerladeira.com.br\/blog\/noise-image\/","url_meta":{"origin":3577,"position":0},"title":"Noise Image","author":"admin","date":"","format":false,"excerpt":"import\u00a0java.awt.Graphics; import\u00a0java.awt.event.WindowAdapter; import\u00a0java.awt.event.WindowEvent; import\u00a0java.awt.image.BufferedImage; import\u00a0java.awt.image.ColorModel; import\u00a0java.awt.image.DataBuffer; import\u00a0java.awt.image.DataBufferByte; import\u00a0java.awt.image.IndexColorModel; import\u00a0java.awt.image.Raster; import\u00a0java.awt.image.WritableRaster; import\u00a0java.util.Random; import\u00a0javax.swing.JComponent; import\u00a0javax.swing.JFrame; public\u00a0class\u00a0StaticGenerator\u00a0extends\u00a0JComponent\u00a0implements\u00a0Runnable\u00a0{ byte[]\u00a0data; BufferedImage\u00a0image; Random\u00a0random; public\u00a0void\u00a0initialize()\u00a0{ int\u00a0w\u00a0=\u00a0getSize().width,\u00a0h\u00a0=\u00a0getSize().height; int\u00a0length\u00a0=\u00a0((w\u00a0+\u00a07)\u00a0*\u00a0h)\u00a0\/\u00a08; data\u00a0=\u00a0new\u00a0byte[length]; DataBuffer\u00a0db\u00a0=\u00a0new\u00a0DataBufferByte(data,\u00a0length); WritableRaster\u00a0wr\u00a0=\u00a0Raster.createPackedRaster(db,\u00a0w,\u00a0h,\u00a01,\u00a0null); ColorModel\u00a0cm\u00a0=\u00a0new\u00a0IndexColorModel(1,\u00a02,\u00a0new\u00a0byte[]\u00a0{\u00a0(byte)\u00a00,\u00a0(byte)\u00a0255\u00a0},\u00a0new\u00a0byte[]\u00a0{ (byte)\u00a00,\u00a0(byte)\u00a0255\u00a0},\u00a0new\u00a0byte[]\u00a0{\u00a0(byte)\u00a00,\u00a0(byte)\u00a0255\u00a0}); image\u00a0=\u00a0new\u00a0BufferedImage(cm,\u00a0wr,\u00a0false,\u00a0null); random\u00a0=\u00a0new\u00a0Random(); new\u00a0Thread(this).start(); } public\u00a0void\u00a0run()\u00a0{ while\u00a0(true)\u00a0{ random.nextBytes(data); repaint(); try\u00a0{ Thread.sleep(1000\u00a0\/\u00a024); }\u00a0catch\u00a0(InterruptedException\u00a0e)\u00a0{\u00a0\/*\u00a0die\u00a0*\/ } } } public\u00a0void\u00a0paint(Graphics\u00a0g)\u00a0{ if\u00a0(image\u00a0==\u00a0null) initialize(); g.drawImage(image,\u00a00,\u00a00,\u00a0this); } public\u00a0static\u00a0void\u00a0main(String[]\u00a0args)\u00a0{ JFrame\u00a0f\u00a0=\u00a0new\u00a0JFrame(); f.add(new\u00a0StaticGenerator()); f.setSize(300,\u00a0300); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 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":"https:\/\/i0.wp.com\/netsysoft.wordpress.com\/wp-content\/uploads\/2010\/02\/staticgenerator.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":3583,"url":"https:\/\/eliezerladeira.com.br\/blog\/fade-out-de-uma-imagem-a-imagem-vai-ficando-transparente-gradualmente-ate-que-esteja-completamente-invisivel\/","url_meta":{"origin":3577,"position":1},"title":"Fade out de uma imagem: a imagem vai ficando transparente gradualmente at\u00e9 que esteja completamente\u00a0invis\u00edvel","author":"admin","date":"","format":false,"excerpt":"import\u00a0java.awt.AlphaComposite; import\u00a0java.awt.Graphics; import\u00a0java.awt.Graphics2D; import\u00a0java.awt.Image; import\u00a0java.awt.event.ActionEvent; import\u00a0java.awt.event.ActionListener; import\u00a0javax.swing.ImageIcon; import\u00a0javax.swing.JFrame; import\u00a0javax.swing.JPanel; import\u00a0javax.swing.Timer; public\u00a0class\u00a0FadeOutImage\u00a0extends\u00a0JPanel\u00a0implements\u00a0ActionListener\u00a0{ Image\u00a0myImage\u00a0=\u00a0new\u00a0ImageIcon(\"a.jpg\").getImage(); Timer\u00a0timer\u00a0=\u00a0new\u00a0Timer(20,\u00a0this); private\u00a0float\u00a0alpha\u00a0=\u00a01f; public\u00a0FadeOutImage()\u00a0{ timer.start(); } public\u00a0void\u00a0paint(Graphics\u00a0g)\u00a0{ super.paint(g); Graphics2D\u00a0g2d\u00a0=\u00a0(Graphics2D)\u00a0g; g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,\u00a0alpha)); g2d.drawImage(myImage,\u00a010,\u00a010,\u00a0null); } public\u00a0void\u00a0actionPerformed(ActionEvent\u00a0e)\u00a0{ alpha\u00a0+=\u00a0-0.01f; if\u00a0(alpha\u00a0<=\u00a00)\u00a0{ alpha\u00a0=\u00a00; timer.stop(); } repaint(); } public\u00a0static\u00a0void\u00a0main(String[]\u00a0args)\u00a0{ JFrame\u00a0frame\u00a0=\u00a0new\u00a0JFrame(\"Fade\u00a0out\"); frame.add(new\u00a0FadeOutImage()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(300,\u00a0250); frame.setVisible(true); } } \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":3585,"url":"https:\/\/eliezerladeira.com.br\/blog\/font-size-animation\/","url_meta":{"origin":3577,"position":2},"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":3581,"url":"https:\/\/eliezerladeira.com.br\/blog\/a-rotating-and-scaling-rectangle\/","url_meta":{"origin":3577,"position":3},"title":"A rotating and scaling\u00a0rectangle","author":"admin","date":"","format":false,"excerpt":"import\u00a0java.awt.Graphics; import\u00a0java.awt.Graphics2D; import\u00a0java.awt.Rectangle; import\u00a0java.awt.RenderingHints; import\u00a0java.awt.event.ActionEvent; import\u00a0java.awt.event.ActionListener; import\u00a0javax.swing.JFrame; import\u00a0javax.swing.JPanel; import\u00a0javax.swing.Timer; public\u00a0class\u00a0SwingTimerBasedAnimationScaleRotate\u00a0extends\u00a0JPanel\u00a0implements\u00a0ActionListener\u00a0{ Timer\u00a0timer; private\u00a0double\u00a0angle\u00a0=\u00a00; private\u00a0double\u00a0scale\u00a0=\u00a01; private\u00a0double\u00a0delta\u00a0=\u00a00.01; Rectangle.Float\u00a0r\u00a0=\u00a0new\u00a0Rectangle.Float(20,\u00a020,\u00a0200,\u00a0200); public\u00a0SwingTimerBasedAnimationScaleRotate()\u00a0{ timer\u00a0=\u00a0new\u00a0Timer(10,\u00a0this); timer.start(); } public\u00a0void\u00a0paint(Graphics\u00a0g)\u00a0{ int\u00a0h\u00a0=\u00a0getHeight(); int\u00a0w\u00a0=\u00a0getWidth(); Graphics2D\u00a0g2d\u00a0=\u00a0(Graphics2D)\u00a0g; g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,\u00a0RenderingHints.VALUE_ANTIALIAS_ON); g2d.setRenderingHint(RenderingHints.KEY_RENDERING,\u00a0RenderingHints.VALUE_RENDER_QUALITY); g2d.translate(w\u00a0\/\u00a02,\u00a0h\u00a0\/\u00a02); g2d.rotate(angle); g2d.scale(scale,\u00a0scale); g2d.fill(r); } public\u00a0static\u00a0void\u00a0main(String[]\u00a0args)\u00a0{ JFrame\u00a0frame\u00a0=\u00a0new\u00a0JFrame(\"Moving\u00a0star\"); frame.add(new\u00a0SwingTimerBasedAnimationScaleRotate()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(420,\u00a0250); frame.setLocationRelativeTo(null); frame.setVisible(true); } public\u00a0void\u00a0actionPerformed(ActionEvent\u00a0e)\u00a0{ if\u00a0(scale\u00a0<\u00a00.01)\u00a0{ delta\u00a0=\u00a0-delta; }\u00a0else\u00a0if\u00a0(scale\u00a0>\u00a00.99)\u00a0{ delta\u00a0=\u00a0-delta; } scale\u00a0+=\u00a0delta; angle\u00a0+=\u00a00.01; 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":3579,"url":"https:\/\/eliezerladeira.com.br\/blog\/timer-based-animation\/","url_meta":{"origin":3577,"position":4},"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":3587,"url":"https:\/\/eliezerladeira.com.br\/blog\/hypnosis-animation\/","url_meta":{"origin":3577,"position":5},"title":"Hypnosis animation","author":"admin","date":"","format":false,"excerpt":"import\u00a0java.awt.Color; import\u00a0java.awt.Dimension; import\u00a0java.awt.GradientPaint; import\u00a0java.awt.Graphics; import\u00a0java.awt.Graphics2D; import\u00a0java.awt.Paint; import\u00a0java.awt.RenderingHints; import\u00a0java.awt.Shape; import\u00a0java.awt.geom.GeneralPath; import\u00a0javax.swing.JComponent; import\u00a0javax.swing.JFrame; public\u00a0class\u00a0Hypnosis1\u00a0extends\u00a0JComponent\u00a0implements\u00a0Runnable\u00a0{ private\u00a0int[]\u00a0coordinates; private\u00a0int[]\u00a0deltas; private\u00a0Paint\u00a0paint; public\u00a0Hypnosis1(int\u00a0numberOfSegments)\u00a0{ int\u00a0numberOfCoordinates\u00a0=\u00a0numberOfSegments\u00a0*\u00a04\u00a0+\u00a02; coordinates\u00a0=\u00a0new\u00a0int[numberOfCoordinates]; deltas\u00a0=\u00a0new\u00a0int[numberOfCoordinates]; for\u00a0(int\u00a0i\u00a0=\u00a00;\u00a0i\u00a0<\u00a0numberOfCoordinates;\u00a0i++)\u00a0{ coordinates[i]\u00a0=\u00a0(int)\u00a0(Math.random()\u00a0*\u00a0300); deltas[i]\u00a0=\u00a0(int)\u00a0(Math.random()\u00a0*\u00a04\u00a0+\u00a03); if\u00a0(deltas[i]\u00a0>\u00a04) deltas[i]\u00a0=\u00a0-(deltas[i]\u00a0-\u00a03); } paint\u00a0=\u00a0new\u00a0GradientPaint(0,\u00a00,\u00a0Color.blue,\u00a020,\u00a010,\u00a0Color.red,\u00a0true); Thread\u00a0t\u00a0=\u00a0new\u00a0Thread(this); t.start(); } public\u00a0void\u00a0run()\u00a0{ try\u00a0{ while\u00a0(true)\u00a0{ timeStep(); repaint(); Thread.sleep(1000\u00a0\/\u00a024); } }\u00a0catch\u00a0(InterruptedException\u00a0ie)\u00a0{ } } public\u00a0void\u00a0paint(Graphics\u00a0g)\u00a0{ Graphics2D\u00a0g2\u00a0=\u00a0(Graphics2D)\u00a0g; g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,\u00a0RenderingHints.VALUE_ANTIALIAS_ON); Shape\u00a0s\u00a0=\u00a0createShape(); g2.setPaint(paint); g2.fill(s); g2.setPaint(Color.white); g2.draw(s); } private\u00a0void\u00a0timeStep()\u00a0{ Dimension\u00a0d\u00a0=\u00a0getSize();\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\/3577","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=3577"}],"version-history":[{"count":1,"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/posts\/3577\/revisions"}],"predecessor-version":[{"id":3578,"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/posts\/3577\/revisions\/3578"}],"wp:attachment":[{"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/media?parent=3577"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/categories?post=3577"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/tags?post=3577"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}