Year of the Desktop Linux
July 12th, 2007
<font color="#7f0055"><strong>import </strong></font><font color="#000000">java.awt.*;</font> <font color="#7f0055"><strong>import </strong></font><font color="#000000">java.util.Calendar;</font> <font color="#7f0055"><strong>import </strong></font><font color="#000000">javax.swing.*;</font> <font color="#7f0055"><strong>public class </strong></font><font color="#000000">YearOfLinuxDesktop </font><font color="#000000">{</font> <font color="#ffffff"> </font><font color="#7f0055"><strong>private static class </strong></font><font color="#000000">YearOfLinuxDesktopPanel </font><font color="#7f0055"><strong> extends </strong></font><font color="#000000">JPanel </font><font color="#000000">{</font> <font color="#ffffff"> </font><font color="#646464">@Override</font> <font color="#ffffff"> </font><font color="#7f0055"><strong>protected </strong></font><font color="#7f0055"><strong>void </strong></font><font color="#000000">paintComponent</font><font color="#000000">(</font><font color="#000000">Graphics g</font><font color="#000000">) {</font> <font color="#ffffff"> </font><font color="#000000">Graphics2D g2d = </font><font color="#000000">(</font><font color="#000000">Graphics2D</font><font color="#000000">)</font><font color="#000000">g.create</font><font color="#000000">()</font><font color="#000000">;</font> <font color="#ffffff"> </font><font color="#000000">g2d.setColor</font><font color="#000000">(</font><font color="#000000">Color.white</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#ffffff"> </font><font color="#000000">g2d.fillRect</font><font color="#000000">(</font><font color="#990000">0</font><font color="#000000">, </font><font color="#990000">0</font><font color="#000000">, getWidth</font><font color="#000000">()</font><font color="#000000">, getHeight</font><font color="#000000">())</font><font color="#000000">;</font> <font color="#ffffff"> </font><font color="#000000">g2d.setColor</font><font color="#000000">(</font><font color="#000000">Color.black</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#ffffff"> </font><font color="#000000">Calendar calendar = Calendar.getInstance</font><font color="#000000">()</font><font color="#000000">;</font> <font color="#ffffff"> </font><font color="#000000">String str = </font><font color="#000000">(</font><font color="#000000">calendar.get</font><font color="#000000">(</font><font color="#000000">Calendar.YEAR</font><font color="#000000">)</font><font color="#000000"> + </font><font color="#990000">1</font><font color="#000000">)</font><font color="#000000">+ </font><font color="#2a00ff"> " will be the year of Linux desktop"</font><font color="#000000">;</font> <font color="#ffffff"> </font><font color="#000000">g2d.setFont</font><font color="#000000">(</font><font color="#000000">g2d.getFont</font><font color="#000000">()</font><font color="#000000">.deriveFont</font><font color="#000000">(</font><font color="#990000">20.0f</font><font color="#000000">))</font><font color="#000000">;</font> <font color="#ffffff"> </font><font color="#000000">FontMetrics fm = g2d.getFontMetrics</font><font color="#000000">()</font><font color="#000000">;</font> <font color="#ffffff"> </font><font color="#000000">g2d.setRenderingHint</font><font color="#000000">( </font><font color="#000000">RenderingHints.KEY_TEXT_ANTIALIASING,</font> <font color="#ffffff"> </font><font color="#000000">RenderingHints.VALUE_TEXT_ANTIALIAS_ON</font><font color="#000000">)</font><font color="#000000">;</font>
<font color="#ffffff"> </font><font color="#3f7f5f">// The following is safe to call on Linux // as well</font><font color="#3f7f5f"> since the rendering is done in // Java and not with</font><font color="#3f7f5f"> native APIs. </font>
<font color="#ffffff"> </font><font color="#000000">g2d.drawString</font><font color="#000000">(</font><font color="#000000">str, </font><font color="#000000"> (</font><font color="#000000">getWidth</font><font color="#000000">() </font><font color="#000000">- fm.stringWidth</font><font color="#000000">(</font><font color="#000000">str</font><font color="#000000">)) </font><font color="#000000">/ </font><font color="#990000">2</font><font color="#000000">,</font> <font color="#ffffff"> </font><font color="#000000">(</font><font color="#000000">getHeight</font><font color="#000000">() </font><font color="#000000">- fm.getHeight</font><font color="#000000">()) </font><font color="#000000">/ </font><font color="#990000">2</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#ffffff"> </font><font color="#000000">g2d.dispose</font><font color="#000000">()</font><font color="#000000">;</font> <font color="#ffffff"> </font><font color="#000000">}</font> <font color="#ffffff"> </font><font color="#000000">}</font> <font color="#ffffff"> </font><font color="#7f0055"><strong>public static </strong></font><font color="#7f0055"><strong>void </strong></font><font color="#000000">main</font><font color="#000000">(</font><font color="#000000">String</font><font color="#000000">[] </font><font color="#000000">args</font><font color="#000000">) {</font> <font color="#ffffff"> </font><font color="#000000">SwingUtilities.invokeLater</font><font color="#000000">(</font><font color="#7f0055"><strong>new </strong></font><font color="#000000">Runnable</font><font color="#000000">() {</font> <font color="#ffffff"> </font><font color="#7f0055"><strong>public </strong></font><font color="#7f0055"><strong>void </strong></font><font color="#000000">run</font><font color="#000000">() {</font> <font color="#ffffff"> </font><font color="#000000">JFrame frame = </font><font color="#7f0055"><strong>new </strong></font><font color="#000000">JFrame</font><font color="#000000">(</font><font color="#2a00ff"> "Linux on Desktop is here!!!"</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#ffffff"> </font><font color="#000000">frame.add</font><font color="#000000">(</font><font color="#7f0055"><strong>new </strong></font><font color="#000000">YearOfLinuxDesktopPanel</font><font color="#000000">())</font><font color="#000000">;</font> <font color="#ffffff"> </font><font color="#000000">frame.setSize</font><font color="#000000">(</font><font color="#990000">400</font><font color="#000000">, </font><font color="#990000">300</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#ffffff"> </font><font color="#000000">frame.setLocationRelativeTo</font><font color="#000000">(</font><font color="#7f0055"><strong>null</strong></font><font color="#000000">)</font><font color="#000000">;</font> <font color="#ffffff"> </font><font color="#000000">frame.setDefaultCloseOperation</font><font color="#000000">( </font><font color="#000000">JFrame.EXIT_ON_CLOSE</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#ffffff"> </font><font color="#000000">frame.setVisible</font><font color="#000000">(</font><font color="#7f0055"><strong>true</strong></font><font color="#000000">)</font><font color="#000000">;</font> <font color="#ffffff"> </font><font color="#000000">}</font> <font color="#ffffff"> </font><font color="#000000">})</font><font color="#000000">;</font> <font color="#ffffff"> </font><font color="#000000">}</font> <font color="#000000">}</font>