tag:blogger.com,1999:blog-18646242.post-1153227671482383732006-07-18T05:49:00.000-07:002006-07-18T06:01:11.566-07:00Graphical ThreadsMultithreading is so, so very easy in Java. Right. But there are some pitfalls we need to look after. There are no guarantees how threads would behave. Its fully at the mercy of the thread scheduler.<br /><br /><br />//myrun.java<br />//please remove the line numbers.<br /><pre><a name="1"><span class="s1"> 1 </span> <span class="s18">class</span> <span class="s21">myrun</span> <span class="s18">implements</span> <span class="s21">Runnable</span> <span class="s23">{</span></a><br /><a name="2"><span class="s1"> 2 </span> <span class="s21">String</span> <span class="s21">data</span><span class="s22">;</span></a><br /><a name="3"><span class="s1"> 3 </span> <span class="s18">public</span> <span class="s18">int</span> <span class="s21">prints</span><span class="s22">;</span></a><br /><a name="4"><span class="s1"> 4 </span> <span class="s18">public</span> <span class="s21">myrun</span><span class="s23">(</span><span class="s21">String</span> <span class="s21">s</span><span class="s23">){</span></a><br /><a name="5"><span class="s1"> 5 </span> <span class="s21">data</span><span class="s22">=</span><span class="s21">s</span><span class="s22">;</span></a><br /><a name="6"><span class="s1"> 6 </span> <span class="s21">prints</span><span class="s22">=</span><span class="s20">0</span><span class="s22">;</span></a><br /><a name="7"><span class="s1"> 7 </span> </a><br /><a name="8"><span class="s1"> 8 </span> <span class="s23">}</span></a><br /><a name="9"><span class="s1"> 9 </span> <span class="s18">public</span> <span class="s18">void</span> <span class="s21">run</span><span class="s23">(){</span></a><br /><a name="10"><span class="s1">10 </span> <span class="s18">while</span><span class="s23">(</span><span class="s19">true</span><span class="s23">){</span></a><br /><a name="11"><span class="s1">11 </span> <span class="s21">System</span><span class="s22">.</span><span class="s21">out</span><span class="s22">.</span><span class="s21">println</span><span class="s23">(</span><span class="s21">data</span><span class="s22">+</span><span class="s17">" printed: "</span><span class="s22">+</span><span class="s21">prints</span><span class="s23">)</span><span class="s22">;</span></a><br /><a name="12"><span class="s1">12 </span> <span class="s21">prints</span><span class="s22">+=</span><span class="s20">5</span><span class="s22">;</span></a><br /><a name="13"><span class="s1">13 </span> <span class="s18">try</span> <span class="s23">{</span></a><br /><a name="14"><span class="s1">14 </span> <span class="s21">Thread</span><span class="s22">.</span><span class="s21">yield</span><span class="s23">()</span><span class="s22">;</span></a><br /><a name="15"><span class="s1">15 </span> <span class="s18">int</span> <span class="s21">flag</span><span class="s22">=</span><span class="s23">(</span><span class="s18">int</span><span class="s23">)(</span><span class="s21">Math</span><span class="s22">.</span><span class="s21">random</span><span class="s23">()</span><span class="s22">*</span><span class="s20">15</span><span class="s23">)</span><span class="s22">;</span></a><br /><a name="16"><span class="s1">16 </span> <span class="s18">if</span><span class="s23">(</span><span class="s21">flag</span><span class="s22">==</span><span class="s20">1</span><span class="s23">)</span></a><br /><a name="17"><span class="s1">17 </span> <span class="s23">{</span></a><br /><a name="18"><span class="s1">18 </span> <span class="s21">Thread</span><span class="s22">.</span><span class="s21">sleep</span><span class="s23">(</span><span class="s20">25</span><span class="s23">)</span><span class="s22">;</span></a><br /><a name="19"><span class="s1">19 </span> <span class="s23">}</span></a><br /><a name="20"><span class="s1">20 </span> <span class="s23">}</span> <span class="s18">catch</span> <span class="s23">(</span><span class="s21">Exception</span> <span class="s21">e</span><span class="s23">)</span> <span class="s23">{</span></a><br /><a name="21"><span class="s1">21 </span> <span class="s16">// TODO</span></a><br /><a name="22"><span class="s1">22 </span> <span class="s23">}</span></a><br /><a name="23"><span class="s1">23 </span> <span class="s23">}</span></a><br /><a name="24"><span class="s1">24 </span> </a><br /><a name="25"><span class="s1">25 </span> <span class="s23">}</span></a><br /><a name="26"><span class="s1">26 </span> <span class="s23">}<br /><br />//GUI.java<br />//Shows the two thraeds which run and displays their progress graphically.<br />//Please remove the line numbers.<br /></span></a><a name="1"><span class="s1"> 1 </span><span class="s18">import</span> <span class="s21">java</span><span class="s22">.</span><span class="s21">awt</span><span class="s22">.</span><span class="s21">Color</span><span class="s22">;</span></a><br /><a name="2"><span class="s1"> 2 </span><span class="s18">import</span> <span class="s21">java</span><span class="s22">.</span><span class="s21">awt</span><span class="s22">.</span><span class="s21">Dimension</span><span class="s22">;</span></a><br /><a name="3"><span class="s1"> 3 </span><span class="s18">import</span> <span class="s21">java</span><span class="s22">.</span><span class="s21">awt</span><span class="s22">.</span><span class="s21">Graphics</span><span class="s22">;</span></a><br /><a name="4"><span class="s1"> 4 </span></a><br /><a name="5"><span class="s1"> 5 </span><span class="s18">import</span> <span class="s21">java</span><span class="s22">.</span><span class="s21">awt</span><span class="s22">.</span><span class="s21">Point</span><span class="s22">;</span></a><br /><a name="6"><span class="s1"> 6 </span><span class="s18">import</span> <span class="s21">java</span><span class="s22">.</span><span class="s21">awt</span><span class="s22">.</span><span class="s21">event</span><span class="s22">.</span><span class="s21">ActionEvent</span><span class="s22">;</span></a><br /><a name="7"><span class="s1"> 7 </span><span class="s18">import</span> <span class="s21">java</span><span class="s22">.</span><span class="s21">awt</span><span class="s22">.</span><span class="s21">event</span><span class="s22">.</span><span class="s21">ActionListener</span><span class="s22">;</span></a><br /><a name="8"><span class="s1"> 8 </span></a><br /><a name="9"><span class="s1"> 9 </span><span class="s18">import</span> <span class="s21">java</span><span class="s22">.</span><span class="s21">awt</span><span class="s22">.</span><span class="s21">event</span><span class="s22">.</span><span class="s21">WindowAdapter</span><span class="s22">;</span></a><br /><a name="10"><span class="s1"> 10 </span></a><br /><a name="11"><span class="s1"> 11 </span><span class="s18">import</span> <span class="s21">java</span><span class="s22">.</span><span class="s21">awt</span><span class="s22">.</span><span class="s21">event</span><span class="s22">.</span><span class="s21">WindowEvent</span><span class="s22">;</span></a><br /><a name="12"><span class="s1"> 12 </span></a><br /><a name="13"><span class="s1"> 13 </span><span class="s18">import</span> <span class="s21">java</span><span class="s22">.</span><span class="s21">util</span><span class="s22">.</span><span class="s21">ArrayList</span><span class="s22">;</span></a><br /><a name="14"><span class="s1"> 14 </span><span class="s18">import</span> <span class="s21">java</span><span class="s22">.</span><span class="s21">util</span><span class="s22">.</span><span class="s21">Iterator</span><span class="s22">;</span></a><br /><a name="15"><span class="s1"> 15 </span><span class="s18">import</span> <span class="s21">java</span><span class="s22">.</span><span class="s21">util</span><span class="s22">.</span><span class="s21">List</span><span class="s22">;</span></a><br /><a name="16"><span class="s1"> 16 </span></a><br /><a name="17"><span class="s1"> 17 </span><span class="s18">import</span> <span class="s21">javax</span><span class="s22">.</span><span class="s21">swing</span><span class="s22">.</span><span class="s21">JFrame</span><span class="s22">;</span></a><br /><a name="18"><span class="s1"> 18 </span><span class="s18">import</span> <span class="s21">javax</span><span class="s22">.</span><span class="s21">swing</span><span class="s22">.</span><span class="s21">JLabel</span><span class="s22">;</span></a><br /><a name="19"><span class="s1"> 19 </span><span class="s18">import</span> <span class="s21">javax</span><span class="s22">.</span><span class="s21">swing</span><span class="s22">.</span><span class="s21">Timer</span><span class="s22">;</span></a><br /><a name="20"><span class="s1"> 20 </span></a><br /><a name="21"><span class="s1"> 21 </span></a><br /><a name="22"><span class="s1"> 22 </span><span class="s18">public</span> <span class="s18">class</span> <span class="s21">GUI</span> <span class="s18">extends</span> <span class="s21">JLabel</span><span class="s23">{</span></a><br /><a name="23"><span class="s1"> 23 </span> <span class="s21">myrun</span> <span class="s21">first</span><span class="s22">;</span></a><br /><a name="24"><span class="s1"> 24 </span> <span class="s21">myrun</span> <span class="s21">second</span><span class="s22">;</span></a><br /><a name="25"><span class="s1"> 25 </span> <span class="s21">List</span><span class="s22"><</span><span class="s21">Point</span><span class="s22">></span> <span class="s21">firstPoints</span><span class="s22">=</span><span class="s18">new</span> <span class="s21">ArrayList</span><span class="s22"><</span><span class="s21">Point</span><span class="s22">></span><span class="s23">()</span><span class="s22">;</span></a><br /><a name="26"><span class="s1"> 26 </span> <span class="s21">List</span><span class="s22"><</span><span class="s21">Point</span><span class="s22">></span> <span class="s21">secondPoints</span><span class="s22">=</span><span class="s18">new</span> <span class="s21">ArrayList</span><span class="s22"><</span><span class="s21">Point</span><span class="s22">></span><span class="s23">()</span><span class="s22">;</span></a><br /><a name="27"><span class="s1"> 27 </span> <span class="s21">Timer</span> <span class="s21">timer</span><span class="s22">;</span></a><br /><a name="28"><span class="s1"> 28 </span> <span class="s18">int</span> <span class="s21">ticks</span><span class="s22">;</span></a><br /><a name="29"><span class="s1"> 29 </span> <span class="s18">static</span> <span class="s18">double</span> <span class="s21">xNormalise</span><span class="s22">=</span><span class="s20">15000</span><span class="s22">;</span></a><br /><a name="30"><span class="s1"> 30 </span> <span class="s18">public</span> <span class="s21">GUI</span><span class="s23">(</span><span class="s21">myrun</span> <span class="s21">first</span><span class="s22">,</span> <span class="s21">myrun</span> <span class="s21">second</span><span class="s23">)</span> <span class="s23">{</span></a><br /><a name="31"><span class="s1"> 31 </span> <span class="s21">setPreferredSize</span><span class="s23">(</span><span class="s18">new</span> <span class="s21">Dimension</span><span class="s23">(</span><span class="s20">200</span><span class="s22">,</span><span class="s20">200</span><span class="s23">))</span><span class="s22">;</span></a><br /><a name="32"><span class="s1"> 32 </span> <span class="s18">this</span><span class="s22">.</span><span class="s21">first</span><span class="s22">=</span><span class="s21">first</span><span class="s22">;</span></a><br /><a name="33"><span class="s1"> 33 </span> <span class="s18">this</span><span class="s22">.</span><span class="s21">second</span><span class="s22">=</span><span class="s21">second</span><span class="s22">;</span></a><br /><a name="34"><span class="s1"> 34 </span> <span class="s21">timer</span><span class="s22">=</span><span class="s18">new</span> <span class="s21">Timer</span><span class="s23">(</span><span class="s20">100</span><span class="s22">,</span> <span class="s18">new</span> <span class="s21">ActionListener</span><span class="s23">(){</span></a><br /><a name="35"><span class="s1"> 35 </span> <span class="s18">public</span> <span class="s18">void</span> <span class="s21">actionPerformed</span><span class="s23">(</span><span class="s21">ActionEvent</span> <span class="s21">e</span><span class="s23">){</span></a><br /><a name="36"><span class="s1"> 36 </span> <span class="s21">repaint</span><span class="s23">()</span><span class="s22">;</span></a><br /><a name="37"><span class="s1"> 37 </span> <span class="s23">}</span></a><br /><a name="38"><span class="s1"> 38 </span> <span class="s23">})</span><span class="s22">;</span></a><br /><a name="39"><span class="s1"> 39 </span> <span class="s23">}</span></a><br /><a name="40"><span class="s1"> 40 </span> <span class="s18">public</span> <span class="s21">GUI</span><span class="s23">()</span> <span class="s23">{</span></a><br /><a name="41"><span class="s1"> 41 </span> <span class="s21">setPreferredSize</span><span class="s23">(</span><span class="s18">new</span> <span class="s21">Dimension</span><span class="s23">(</span><span class="s20">500</span><span class="s22">,</span><span class="s20">200</span><span class="s23">))</span><span class="s22">;</span></a><br /><a name="42"><span class="s1"> 42 </span> <span class="s18">this</span><span class="s22">.</span><span class="s21">first</span><span class="s22">=</span><span class="s18">new</span> <span class="s21">myrun</span><span class="s23">(</span><span class="s17">"First"</span><span class="s23">)</span><span class="s22">;</span></a><br /><a name="43"><span class="s1"> 43 </span> <span class="s18">this</span><span class="s22">.</span><span class="s21">second</span><span class="s22">=</span><span class="s18">new</span> <span class="s21">myrun</span><span class="s23">(</span><span class="s17">"Second"</span><span class="s23">)</span><span class="s22">;</span></a><br /><a name="44"><span class="s1"> 44 </span> <span class="s18">new</span> <span class="s21">Thread</span><span class="s23">(</span><span class="s21">first</span><span class="s23">)</span><span class="s22">.</span><span class="s21">start</span><span class="s23">()</span><span class="s22">;</span></a><br /><a name="45"><span class="s1"> 45 </span> <span class="s18">new</span> <span class="s21">Thread</span><span class="s23">(</span><span class="s21">second</span><span class="s23">)</span><span class="s22">.</span><span class="s21">start</span><span class="s23">()</span><span class="s22">;</span></a><br /><a name="46"><span class="s1"> 46 </span> <span class="s21">ticks</span><span class="s22">=</span><span class="s20">0</span><span class="s22">;</span></a><br /><a name="47"><span class="s1"> 47 </span> <span class="s21">firstPoints</span><span class="s22">.</span><span class="s21">add</span><span class="s23">(</span><span class="s18">new</span> <span class="s21">Point</span><span class="s23">(</span><span class="s20">0</span><span class="s22">,</span><span class="s20">0</span><span class="s23">))</span><span class="s22">;</span></a><br /><a name="48"><span class="s1"> 48 </span> <span class="s21">secondPoints</span><span class="s22">.</span><span class="s21">add</span><span class="s23">(</span><span class="s18">new</span> <span class="s21">Point</span><span class="s23">(</span><span class="s20">0</span><span class="s22">,</span><span class="s20">0</span><span class="s23">))</span><span class="s22">;</span></a><br /><a name="49"><span class="s1"> 49 </span> <span class="s21">timer</span><span class="s22">=</span><span class="s18">new</span> <span class="s21">Timer</span><span class="s23">(</span><span class="s20">100</span><span class="s22">,</span> <span class="s18">new</span> <span class="s21">ActionListener</span><span class="s23">(){</span></a><br /><a name="50"><span class="s1"> 50 </span> <span class="s18">public</span> <span class="s18">void</span> <span class="s21">actionPerformed</span><span class="s23">(</span><span class="s21">ActionEvent</span> <span class="s21">e</span><span class="s23">){</span></a><br /><a name="51"><span class="s1"> 51 </span> </a><br /><a name="52"><span class="s1"> 52 </span> <span class="s21">ticks</span><span class="s22">++;</span></a><br /><a name="53"><span class="s1"> 53 </span> </a><br /><a name="54"><span class="s1"> 54 </span> <span class="s18">int</span> <span class="s21">xPos1</span><span class="s22">=</span><span class="s23">(</span><span class="s18">int</span><span class="s23">)(</span><span class="s21">first</span><span class="s22">.</span><span class="s21">prints</span><span class="s22">/</span><span class="s21">xNormalise</span><span class="s22">*</span><span class="s21">getWidth</span><span class="s23">())</span><span class="s22">;</span></a><br /><a name="55"><span class="s1"> 55 </span> <span class="s18">while</span><span class="s23">(</span><span class="s21">xPos1</span><span class="s22">></span><span class="s21">getWidth</span><span class="s23">()){</span></a><br /><a name="56"><span class="s1"> 56 </span> <span class="s21">xPos1</span><span class="s22">-=</span><span class="s21">getWidth</span><span class="s23">()</span><span class="s22">;</span></a><br /><a name="57"><span class="s1"> 57 </span> <span class="s23">}</span></a><br /><a name="58"><span class="s1"> 58 </span> <span class="s18">int</span> <span class="s21">xPos2</span> <span class="s22">=</span> <span class="s23">(</span><span class="s18">int</span><span class="s23">)(</span><span class="s21">second</span><span class="s22">.</span><span class="s21">prints</span><span class="s22">/</span><span class="s21">xNormalise</span><span class="s22">*</span><span class="s21">getWidth</span><span class="s23">())</span><span class="s22">;</span></a><br /><a name="59"><span class="s1"> 59 </span> <span class="s18">while</span><span class="s23">(</span><span class="s21">xPos2</span><span class="s22">></span><span class="s21">getWidth</span><span class="s23">()){</span></a><br /><a name="60"><span class="s1"> 60 </span> <span class="s21">xPos2</span><span class="s22">-=</span><span class="s21">getWidth</span><span class="s23">()</span><span class="s22">;</span></a><br /><a name="61"><span class="s1"> 61 </span> <span class="s23">}</span></a><br /><a name="62"><span class="s1"> 62 </span> <span class="s18">int</span> <span class="s21">yPos</span><span class="s22">=</span><span class="s21">ticks</span><span class="s22">;</span></a><br /><a name="63"><span class="s1"> 63 </span> <span class="s21">firstPoints</span><span class="s22">.</span><span class="s21">add</span><span class="s23">(</span><span class="s18">new</span> <span class="s21">Point</span><span class="s23">(</span><span class="s21">xPos1</span><span class="s22">,</span><span class="s21">yPos</span><span class="s23">))</span><span class="s22">;</span></a><br /><a name="64"><span class="s1"> 64 </span> <span class="s21">secondPoints</span><span class="s22">.</span><span class="s21">add</span><span class="s23">(</span><span class="s18">new</span> <span class="s21">Point</span><span class="s23">(</span><span class="s21">xPos2</span><span class="s22">,</span><span class="s21">yPos</span><span class="s23">))</span><span class="s22">;</span></a><br /><a name="65"><span class="s1"> 65 </span> <span class="s21">repaint</span><span class="s23">()</span><span class="s22">;</span></a><br /><a name="66"><span class="s1"> 66 </span> <span class="s23">}</span></a><br /><a name="67"><span class="s1"> 67 </span> <span class="s23">})</span><span class="s22">;</span></a><br /><a name="68"><span class="s1"> 68 </span> </a><br /><a name="69"><span class="s1"> 69 </span> <span class="s21">timer</span><span class="s22">.</span><span class="s21">start</span><span class="s23">()</span><span class="s22">;</span></a><br /><a name="70"><span class="s1"> 70 </span> </a><br /><a name="71"><span class="s1"> 71 </span> <span class="s23">}</span></a><br /><a name="72"><span class="s1"> 72 </span> <span class="s18">public</span> <span class="s18">void</span> <span class="s21">paintComponent</span><span class="s23">(</span><span class="s21">Graphics</span> <span class="s21">g</span><span class="s23">){</span></a><br /><a name="73"><span class="s1"> 73 </span> <span class="s18">super</span><span class="s22">.</span><span class="s21">paintComponent</span><span class="s23">(</span><span class="s21">g</span><span class="s23">)</span><span class="s22">;</span></a><br /><a name="74"><span class="s1"> 74 </span> <span class="s21">g</span><span class="s22">.</span><span class="s21">setColor</span><span class="s23">(</span><span class="s21">Color</span><span class="s22">.</span><span class="s21">WHITE</span><span class="s23">)</span><span class="s22">;</span></a><br /><a name="75"><span class="s1"> 75 </span> <span class="s21">g</span><span class="s22">.</span><span class="s21">fillRect</span><span class="s23">(</span><span class="s20">0</span><span class="s22">,</span><span class="s20">0</span><span class="s22">,</span><span class="s21">getWidth</span><span class="s23">()</span><span class="s22">,</span><span class="s21">getHeight</span><span class="s23">())</span><span class="s22">;</span></a><br /><a name="76"><span class="s1"> 76 </span> <span class="s21">Point</span> <span class="s21">prev1</span><span class="s22">;</span></a><br /><a name="77"><span class="s1"> 77 </span> <span class="s21">Point</span> <span class="s21">next1</span><span class="s22">;</span></a><br /><a name="78"><span class="s1"> 78 </span> <span class="s21">Iterator</span><span class="s22"><</span><span class="s21">Point</span><span class="s22">></span> <span class="s21">i</span><span class="s22">=</span><span class="s21">firstPoints</span><span class="s22">.</span><span class="s21">iterator</span><span class="s23">()</span><span class="s22">;</span></a><br /><a name="79"><span class="s1"> 79 </span> <span class="s21">prev1</span> <span class="s22">=</span> <span class="s21">i</span><span class="s22">.</span><span class="s21">next</span><span class="s23">()</span><span class="s22">;</span></a><br /><a name="80"><span class="s1"> 80 </span> <span class="s21">next1</span> <span class="s22">=</span> <span class="s21">i</span><span class="s22">.</span><span class="s21">next</span><span class="s23">()</span><span class="s22">;</span></a><br /><a name="81"><span class="s1"> 81 </span> <span class="s21">g</span><span class="s22">.</span><span class="s21">setColor</span><span class="s23">(</span><span class="s21">Color</span><span class="s22">.</span><span class="s21">RED</span><span class="s23">)</span><span class="s22">;</span></a><br /><a name="82"><span class="s1"> 82 </span> <span class="s21">g</span><span class="s22">.</span><span class="s21">drawLine</span><span class="s23">(</span><span class="s21">prev1</span><span class="s22">.</span><span class="s21">x</span><span class="s22">,</span><span class="s21">prev1</span><span class="s22">.</span><span class="s21">y</span><span class="s22">,</span><span class="s21">next1</span><span class="s22">.</span><span class="s21">x</span><span class="s22">,</span><span class="s21">next1</span><span class="s22">.</span><span class="s21">y</span><span class="s23">)</span><span class="s22">;</span></a><br /><a name="83"><span class="s1"> 83 </span> <span class="s18">while</span><span class="s23">(</span><span class="s21">i</span><span class="s22">.</span><span class="s21">hasNext</span><span class="s23">()){</span></a><br /><a name="84"><span class="s1"> 84 </span> <span class="s21">prev1</span><span class="s22">=</span><span class="s21">next1</span><span class="s22">;</span></a><br /><a name="85"><span class="s1"> 85 </span> <span class="s21">next1</span><span class="s22">=</span><span class="s21">i</span><span class="s22">.</span><span class="s21">next</span><span class="s23">()</span><span class="s22">;</span></a><br /><a name="86"><span class="s1"> 86 </span> <span class="s21">g</span><span class="s22">.</span><span class="s21">drawLine</span><span class="s23">(</span><span class="s21">prev1</span><span class="s22">.</span><span class="s21">x</span><span class="s22">,</span><span class="s21">prev1</span><span class="s22">.</span><span class="s21">y</span><span class="s22">,</span><span class="s21">next1</span><span class="s22">.</span><span class="s21">x</span><span class="s22">,</span><span class="s21">next1</span><span class="s22">.</span><span class="s21">y</span><span class="s23">)</span><span class="s22">;</span></a><br /><a name="87"><span class="s1"> 87 </span> <span class="s23">}</span></a><br /><a name="88"><span class="s1"> 88 </span> <span class="s21">i</span><span class="s22">=</span><span class="s21">secondPoints</span><span class="s22">.</span><span class="s21">iterator</span><span class="s23">()</span><span class="s22">;</span></a><br /><a name="89"><span class="s1"> 89 </span> <span class="s21">prev1</span> <span class="s22">=</span> <span class="s21">i</span><span class="s22">.</span><span class="s21">next</span><span class="s23">()</span><span class="s22">;</span></a><br /><a name="90"><span class="s1"> 90 </span> <span class="s21">next1</span> <span class="s22">=</span> <span class="s21">i</span><span class="s22">.</span><span class="s21">next</span><span class="s23">()</span><span class="s22">;</span></a><br /><a name="91"><span class="s1"> 91 </span> <span class="s21">g</span><span class="s22">.</span><span class="s21">setColor</span><span class="s23">(</span><span class="s21">Color</span><span class="s22">.</span><span class="s21">GREEN</span><span class="s23">)</span><span class="s22">;</span></a><br /><a name="92"><span class="s1"> 92 </span> <span class="s21">g</span><span class="s22">.</span><span class="s21">drawLine</span><span class="s23">(</span><span class="s21">prev1</span><span class="s22">.</span><span class="s21">x</span><span class="s22">,</span><span class="s21">prev1</span><span class="s22">.</span><span class="s21">y</span><span class="s22">,</span><span class="s21">next1</span><span class="s22">.</span><span class="s21">x</span><span class="s22">,</span><span class="s21">next1</span><span class="s22">.</span><span class="s21">y</span><span class="s23">)</span><span class="s22">;</span></a><br /><a name="93"><span class="s1"> 93 </span> <span class="s18">while</span><span class="s23">(</span><span class="s21">i</span><span class="s22">.</span><span class="s21">hasNext</span><span class="s23">()){</span></a><br /><a name="94"><span class="s1"> 94 </span> <span class="s21">prev1</span><span class="s22">=</span><span class="s21">next1</span><span class="s22">;</span></a><br /><a name="95"><span class="s1"> 95 </span> <span class="s21">next1</span><span class="s22">=</span><span class="s21">i</span><span class="s22">.</span><span class="s21">next</span><span class="s23">()</span><span class="s22">;</span></a><br /><a name="96"><span class="s1"> 96 </span> <span class="s21">g</span><span class="s22">.</span><span class="s21">drawLine</span><span class="s23">(</span><span class="s21">prev1</span><span class="s22">.</span><span class="s21">x</span><span class="s22">,</span><span class="s21">prev1</span><span class="s22">.</span><span class="s21">y</span><span class="s22">,</span><span class="s21">next1</span><span class="s22">.</span><span class="s21">x</span><span class="s22">,</span><span class="s21">next1</span><span class="s22">.</span><span class="s21">y</span><span class="s23">)</span><span class="s22">;</span></a><br /><a name="97"><span class="s1"> 97 </span> <span class="s23">}</span></a><br /><a name="98"><span class="s1"> 98 </span> </a><br /><a name="99"><span class="s1"> 99 </span> <span class="s23">}</span></a><br /><a name="100"><span class="s1">100 </span> <span class="s18">public</span> <span class="s18">static</span> <span class="s18">void</span> <span class="s21">main</span><span class="s23">(</span><span class="s21">String</span> <span class="s21">args</span><span class="s23">[]){</span></a><br /><a name="101"><span class="s1">101 </span> <span class="s21">JFrame</span> <span class="s21">f</span><span class="s22">=</span><span class="s18">new</span> <span class="s21">JFrame</span><span class="s23">()</span><span class="s22">;</span></a><br /><a name="102"><span class="s1">102 </span> <span class="s21">f</span><span class="s22">.</span><span class="s21">add</span><span class="s23">(</span><span class="s18">new</span> <span class="s21">GUI</span><span class="s23">())</span><span class="s22">;</span></a><br /><a name="103"><span class="s1">103 </span> <span class="s21">f</span><span class="s22">.</span><span class="s21">pack</span><span class="s23">()</span><span class="s22">;</span></a><br /><a name="104"><span class="s1">104 </span> <span class="s21">f</span><span class="s22">.</span><span class="s21">setVisible</span><span class="s23">(</span><span class="s19">true</span><span class="s23">)</span><span class="s22">;</span></a><br /><a name="105"><span class="s1">105 </span> <span class="s21">f</span><span class="s22">.</span><span class="s21">addWindowListener</span><span class="s23">(</span><span class="s18">new</span> <span class="s21">WindowAdapter</span><span class="s23">(){</span></a><br /><a name="106"><span class="s1">106 </span> <span class="s18">public</span> <span class="s18">void</span> <span class="s21">windowClosing</span><span class="s23">(</span><span class="s21">WindowEvent</span> <span class="s21">e</span><span class="s23">){</span></a><br /><a name="107"><span class="s1">107 </span> <span class="s21">System</span><span class="s22">.</span><span class="s21">exit</span><span class="s23">(</span><span class="s20">0</span><span class="s23">)</span><span class="s22">;</span></a><br /><a name="108"><span class="s1">108 </span> <span class="s23">}</span></a><br /><a name="109"><span class="s1">109 </span> <span class="s23">})</span><span class="s22">;</span></a><br /><a name="110"><span class="s1">110 </span> <span class="s23">}</span></a><br /><a name="111"><span class="s1">111 </span> </a><br /><a name="112"><span class="s1">112 </span><span class="s23">}</span></a><a name="26"><br /></a></pre><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18646242-115322767148238373?l=bytecodes.blogspot.com'/></div>shabdahttp://www.blogger.com/profile/07961528262493927188noreply@blogger.com0