<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>swingworker &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://en.wordpress.com/tag/swingworker/</link>
	<description>Feed of posts on WordPress.com tagged "swingworker"</description>
	<pubDate>Wed, 10 Feb 2010 08:21:10 +0000</pubDate>

	<generator>http://en.wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[JAVA How to Program - Deitel (Kitap İnceleme)]]></title>
<link>http://ferhanakman.wordpress.com/2009/03/18/java-how-to-program-deitel-kitap-inceleme/</link>
<pubDate>Wed, 18 Mar 2009 02:34:43 +0000</pubDate>
<dc:creator>ferhanakman</dc:creator>
<guid>http://ferhanakman.wordpress.com/2009/03/18/java-how-to-program-deitel-kitap-inceleme/</guid>
<description><![CDATA[Bilişim Kitap İncelemeleri- 6   pandora sitesinden kitap ile ilgili bilgilere ulaşabilirsiniz. Yayın]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><strong>Bilişim Kitap İncelemeleri- 6</strong></p>
<p><img src="http://www.pandora.com.tr/images/kapak/169633.jpg" alt="Java How To Program 7e PIE" /></p>
<p> </p>
<p>pandora sitesinden kitap ile ilgili bilgilere <a href="http://www.pandora.com.tr/urun.aspx?id=169633">ulaşabilirsiniz</a>.</p>
<p>Yayınlanma Tarihi:  2007<br />
Satın Aldığım Tarih:  Şubat 2008</p>
<p> </p>
<p><strong>Kitap Hakkındaki Yorumum: </strong></p>
<p style="text-align:justify;">Beni Javacı yapan kitap! Kitabın dili ingilizcedir. İngilizceniz yoksa bile bu kitabı alıp kodlarına baksanız, resimlerini inceleseniz bu kitaptan birşeyler kaparsınız&#8230; <!--more--> Gerçekten JAVA&#8217;da temel şeyleri öğretebilen, farkları anlatabilen, mükemmel örnekler sunabilen bir kitap. Benim tavsiyem, kitabı aldığınızda (konuları bilseniz bile) bu kitabı en baştan incelemeye başlamanız. Yazar, kitabın 5. chapter&#8217;inde anlatmış olduğu bir örneği 16. veya 20. chapterlarda değinebiliyor. Mesela hemen hemen her konunun sonunda yer verdiği ve içerisine o konudan birşeyler kattığı ATM isimli örneği gerçekten çok güzel. Eğer Java ile karşılaşacağınız her koda en azından göz aşinalığınız olsun istiyorsanız, neredeyse baştan sonra satır satır okuduğum bu kitabı tavsiye ediyorum.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[SwingWorker Thread Kullanımı‏ &amp; Uygulama]]></title>
<link>http://ferhanakman.wordpress.com/2008/09/24/swingworker-thread-kullanimi%e2%80%8f-uygulama-2/</link>
<pubDate>Wed, 24 Sep 2008 08:18:04 +0000</pubDate>
<dc:creator>ferhanakman</dc:creator>
<guid>http://ferhanakman.wordpress.com/2008/09/24/swingworker-thread-kullanimi%e2%80%8f-uygulama-2/</guid>
<description><![CDATA[İnternet üzerinde bu konuyu işleyen ilk ve tek Türkçe dökümandır. Türk yazılımcı kardeşlerime yararl]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p class="MsoNormal" style="text-align:justify;margin:0 0 10pt;">İnternet üzerinde bu konuyu işleyen ilk ve tek Türkçe dökümandır. Türk yazılımcı kardeşlerime yararlı olması dileği ile&#8230;</p>
<p class="MsoNormal" style="text-align:justify;margin:0 0 10pt;"><span style="font-size:100%;"><span style="color:#000000;">Multi-threading uygulamalarımızda Swing kullanacağımız zaman dikkat edilmesi gereken 2 nokta var.</span></span></p>
<p><!--more--></p>
<p class="MsoListParagraphCxSpFirst" style="text-indent:-18pt;text-align:justify;margin:0 0 0 36pt;"><span style="color:#000000;"><span style="font-size:100%;color:#ff0000;"><strong>1-</strong></span><span style="font-weight:normal;line-height:normal;font-style:normal;font-variant:normalfont-size:7;"> </span><span style="font-size:100%;">Zaman alan işlemlerin </span></span><em><span style="line-height:115%;font-size:11px;color:#333333;" lang="EN-US">Event Dispatch Thread </span></em><span style="font-size:100%;"><span style="color:#000000;">üzerinde koşturulmaması gerekir. Aksi takdirde programımız işlem yaparken yanıt veremez hale gelecektir. </span></span></p>
<p class="MsoListParagraphCxSpLast" style="text-indent:-18pt;text-align:justify;margin:0 0 10pt 36pt;"><span style="color:#000000;"><span style="font-size:100%;color:#ff0000;"><strong>2-</strong></span><span style="font-weight:normal;line-height:normal;font-style:normal;font-variant:normalfont-size:7;"> </span><span style="font-size:100%;">Programımızda Swing ile ilgili kullanmış olduğumuz tüm componentlerin </span></span><em><span style="line-height:115%;font-size:11px;color:#333333;" lang="EN-US">Event Dispatch Thread </span></em><span style="font-size:100%;"><span style="color:#000000;">üzerinden koşturulması.</span></span></p>
<p class="MsoNormal" style="text-align:justify;margin:0 0 10pt;"><span style="font-size:100%;color:#000000;">Yukarıdaki veriler ışığında şu sonuç ortaya çıkıyor:</span></p>
<p class="MsoNormal" style="text-align:justify;margin:0 0 10pt;"><span style="font-size:100%;color:#000000;"> Programımız için Swing componentlerini kullanan bir GUI tasarladığımızda, bize en az 2 adet Thread lazım. <span style="color:#ffff99;"><span style="color:#000000;">1 Thread&#8217;i uzun zaman alacak işlemlerimiz için kullanacağız, diğer Thread&#8217;imizide yani</span> </span></span><span style="color:#ffff99;"><em><span style="line-height:115%;font-size:11px;color:#333333;" lang="EN-US"><span style="background-color:#ffffff;font-family:Calibri;">Event Dispatch Thread</span></span></em><span style="font-size:100%;color:#000000;"><span style="background-color:#ffffff;"> </span><span style="background-color:#ffff99;">&#8216;ini</span></span></span><span style="background-color:#ffff99;"><span style="line-height:115%;font-size:11px;color:#333333;" lang="EN-US"><span style="font-family:Calibri;">de </span></span><span style="font-size:100%;"><span style="color:#000000;">tüm GUI bileşenleri için kullanacağız. Zaman alan işlemlerimiz programın arka tarafında çalışıp, işlemini tamamladığında GUI&#8217;mizi update edecek. Ve sonuç olarak  kusursuz işleyen becerekli bir programa sahip olacağız. </span></span></span></p>
<p class="MsoNormal" style="text-align:justify;margin:0 0 10pt;"><span style="font-size:100%;"><span style="color:#000000;">SwingWorker&#8217;ın yapısında bulunan metodlar: </span></span></p>
<p class="MsoNormal" style="text-align:justify;margin:0 0 10pt 35.4pt;"><span style="background:yellow;line-height:115%;color:black;">doInBackground()</span><span style="line-height:115%;font-size:10px;color:black;">:</span><span style="font-size:100%;"><span style="color:#000000;">Uzun süren işlemlerin / hesaplamaların yapılacağı zaman çağırılacak thread. </span></span></p>
<p class="MsoNormal" style="text-align:justify;margin:0 0 10pt 35.4pt;"><span style="background:yellow;line-height:115%;color:black;">done()</span><span style="line-height:115%;font-size:10px;color:black;">: doInBackground()</span><span style="font-size:100%;color:#000000;"> dan gelen sonuçları </span><em><span style="line-height:115%;font-size:11px;color:#333333;" lang="EN-US"><span style="font-family:Calibri;">Event Dispatch Thread </span></span></em><span style="font-size:100%;"><span style="color:#000000;">üzerinde koşturur. </span></span></p>
<p class="MsoNormal" style="text-align:justify;margin:0 0 10pt 35.4pt;"><span style="background:yellow;line-height:115%;color:black;">execute()</span><span style="font-size:100%;"><span style="color:#000000;">: SwingWorker objesinde bir threadi çalıştırmak için çağırdığımız metod.</span></span></p>
<p class="MsoNormal" style="text-align:justify;margin:0 0 10pt 35.4pt;"><span style="background:yellow;line-height:115%;color:black;">get()</span><span style="font-size:100%;"><span style="color:#000000;">: Programımız tarafından yapılan hesap işleminin tamamlanmasını bekler ve hesap işleminden çıkan sonucu döndür.</span></span></p>
<p class="MsoNormal" style="text-align:justify;margin:0 0 10pt 35.4pt;"><span style="background:yellow;line-height:115%;color:black;">publish()</span><span style="color:#000000;"><span style="font-size:100%;">: </span><span style="line-height:115%;font-size:10px;color:black;">doInBackground() </span><span style="font-size:100%;">metodundan gelen orta sonuçları </span></span><em><span style="line-height:115%;font-size:11px;color:#333333;" lang="EN-US"><span style="font-family:Calibri;">Event Dispatch Thread </span></span></em><span style="font-size:100%;"><span style="color:#000000;">tarafında koşturulması için gönderir.</span></span></p>
<p class="MsoNormal" style="text-align:justify;margin:0 0 10pt 35.4pt;"><span style="background:yellow;line-height:115%;color:black;">process ()</span><span style="color:#000000;"><span style="font-size:100%;">: </span><span style="line-height:115%;font-size:10px;color:black;">publish()</span><span style="font-size:100%;">metodundan gelen orta sonuçları alır ve </span></span><em><span style="line-height:115%;font-size:11px;color:#333333;" lang="EN-US"><span style="font-family:Calibri;">Event Dispatch Thread </span></span></em><span style="font-size:100%;"><span style="color:#000000;">tarafında koşturulması için gönderir.</span></span></p>
<p class="MsoNormal" style="text-align:justify;margin:0 0 10pt 35.4pt;"><span style="background:yellow;line-height:115%;color:black;">setProgress()</span><span style="font-size:100%;"><span style="color:#000000;">: Thread&#8217;imizle ilgili ara değerler göndermek için kullanıyoruz. Genelde Progress bar&#8217;ı update ederken kullanıyor.</span></span></p>
<p class="MsoNormal" style="text-align:justify;margin:0 0 10pt 35.4pt;"><span style="font-size:100%;color:#000000;"> </span></p>
<p class="MsoNormal" style="text-align:justify;margin:0 0 10pt 35.4pt;"><span style="font-size:100%;"><span style="color:#000000;">Şimdi basit bir örnek ile inceleyelim.</span></span><span style="font-size:100%;color:#000000;"> Yapacağımız örneği genel olarak açıklayacak olursak; Örnektekteki programımız 2 classdan oluşuyor. Fibonacci sayılarının nasıl bulunduğunu göreceğiz. <span style="font-weight:normal;" lang="EN-US"><span style="font-family:Calibri;font-size:85%;color:#4f81bd;"><em>FibonacciCalculator </em><span style="font-family:Bookman Old Style;font-size:100%;color:#000000;">classı swingWorker&#8217;ımızın çalışacağı alan ve GUI classıda isminden de anlaşılabileceği üzere Kullanıcı arayüzünün bulunduğu kısım. Şimdi dilerseniz kodlara ve içerisinde yorumlara göz atalım..</span></span></span></span></p>
<p class="MsoCaption" style="margin:0 0 10pt;"><span style="color:#4f81bd;"><span style="font-family:Calibri;"><span lang="EN-US"><strong>Class </strong></span><em><span style="font-weight:normal;" lang="EN-US">FibonacciCalculator</span></em><span lang="EN-US"><strong> </strong></span></span></span></p>
<table class="MsoTableGrid" style="border-right:medium none;border-top:medium none;border-left:medium none;border-bottom:medium none;border-collapse:collapse;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="background:#f2f2f2;width:460.6pt;border:black 1pt solid;padding:0 5.4pt;" width="614" valign="top"><span style="font-size:10px;">    </p>
<p class="MsoNormal" style="margin:0 0 10pt;"><strong><span style="line-height:115%;font-size:10px;color:#7f0055;">import</span></strong><span style="line-height:115%;font-size:10px;color:black;"> java.util.concurrent.ExecutionException; </span><strong><span style="font-size:10px;color:#7f0055;">import</span></strong><span style="font-size:10px;color:black;"> javax.swing.JLabel; </span><strong><span style="font-size:10px;color:#7f0055;">import</span></strong><span style="font-size:10px;color:black;"> javax.swing.SwingWorker;</span> <span style="font-size:10px;"><span style="color:#000000;"> </span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:#3f5fbf;">/**</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#3f5fbf;">*</span><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f9fbf;">@author</span></strong><span style="font-size:10px;color:black;"> Ferhan Akman</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#3f5fbf;">*</span><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f9fbf;">@date</span></strong><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#3f5fbf;">24.09.2008</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#3f5fbf;">*/</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><strong><span style="font-size:10px;color:#7f0055;">public</span></strong><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">class</span></strong><span style="font-size:10px;color:black;"> FibonacciCalculator </span><strong><span style="font-size:10px;color:#7f0055;">extends</span></strong><span style="font-size:10px;color:black;"> SwingWorker {</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">private</span></strong><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">final</span></strong><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">long</span></strong><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">n</span><span style="font-size:10px;color:black;">;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">private</span></strong><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">final</span></strong><span style="font-size:10px;color:black;"> JLabel </span><span style="font-size:10px;color:#0000c0;">resultJLabel</span><span style="font-size:10px;color:black;">;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">public</span></strong><span style="font-size:10px;color:black;"> FibonacciCalculator( </span><strong><span style="font-size:10px;color:#7f0055;">long</span></strong><span style="font-size:10px;color:black;"> no, JLabel label) {</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">n</span><span style="font-size:10px;color:black;"> = no;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">resultJLabel</span><span style="font-size:10px;color:black;"> = label;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> }</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;"><span style="color:#000000;"> </span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#3f7f5f;">//fibonacci(long number) fonksiyonnuna hesaplayacağımız elemanın  sayısını yazıyoruz. </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">public</span></strong><span style="font-size:10px;color:black;"> Object doInBackground(){</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">long</span></strong><span style="font-size:10px;color:black;"> nthFib = fibonacci ( </span><span style="font-size:10px;color:#0000c0;">n</span><span style="font-size:10px;color:black;"> );</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">return</span></strong><span style="font-size:10px;color:black;"> String.<em>valueOf</em>( nthFib );</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> }</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;"><span style="color:#000000;"> </span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#3f7f5f;">/*</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:#3f7f5f;"> doInBackground() fonksiyonundan geriye dönecek olan değer done() fonksiyonuna gelir. burada koşullara göre GUI üzerinde değişiklik yapmasını söylüyoruz. işlemimiz tamamlandığında, sonuç get() fonksiyona gelecek. biz burada resultJLabel&#8217;ına sonucu yazmasını söylüyoruz. </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:#3f7f5f;"> */</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">protected</span></strong><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">void</span></strong><span style="font-size:10px;color:black;"> done(){</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">try</span></strong><span style="font-size:10px;color:black;"> {</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">resultJLabel</span><span style="font-size:10px;color:black;">.setText ( (String) get() );</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> } </span><strong><span style="font-size:10px;color:#7f0055;">catch</span></strong><span style="font-size:10px;color:black;"> (InterruptedException e) {</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">resultJLabel</span><span style="font-size:10px;color:black;">.setText(</span><span style="font-size:10px;color:#2a00ff;">&#8216; işlem kullanıcı tarafından durduruldu!&#8217;</span><span style="font-size:10px;color:black;">);</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> } </span><strong><span style="font-size:10px;color:#7f0055;">catch</span></strong><span style="font-size:10px;color:black;"> (ExecutionException e) {</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">resultJLabel</span><span style="font-size:10px;color:black;">.setText(</span><span style="font-size:10px;color:#2a00ff;">&#8216; işlem çalışırken çalışma hatası meydana geldi!&#8217;</span><span style="font-size:10px;color:black;">);</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> }</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> }</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#3f7f5f;">//recursive bir fonksiyon kullanarak fibonacci sayısını hesaplıyoruz.</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">private</span></strong><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">long</span></strong><span style="font-size:10px;color:black;"> fibonacci( </span><strong><span style="font-size:10px;color:#7f0055;">long</span></strong><span style="font-size:10px;color:black;"> number) {</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">if</span></strong><span style="font-size:10px;color:black;">( number == 0  number == 1 )</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">return</span></strong><span style="font-size:10px;color:black;"> number;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">else</span></strong></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">return</span></strong><span style="font-size:10px;color:black;"> fibonacci ( number &#8211; 1 ) + fibonacci( number -2 );</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> }</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;">}</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:100%;color:#000000;"> </span></p>
<p>       </p>
<p></span></td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="text-align:justify;margin:0 0 10pt;"><span style="font-size:100%;color:#000000;"> </span></p>
<p class="MsoNormal" style="text-align:justify;margin:0 0 10pt;"><span style="font-size:100%;color:#000000;"> </span><span style="color:#4f81bd;"><span style="font-family:Calibri;"><span lang="EN-US"><strong>Class </strong></span><em><span style="font-weight:normal;" lang="EN-US">GUI</span></em></span></span></p>
<table class="MsoTableGrid" style="border-right:medium none;border-top:medium none;border-left:medium none;border-bottom:medium none;border-collapse:collapse;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="background:#f2f2f2;width:460.6pt;border:black 1pt solid;padding:0 5.4pt;" width="614" valign="top">
<p class="MsoNormal" style="line-height:normal;margin:0;"><strong><span style="font-size:10px;color:#7f0055;">import</span></strong><span style="font-size:10px;color:black;"> <span style="background:silver;">java.awt.Color</span>;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><strong><span style="font-size:10px;color:#7f0055;">import</span></strong><span style="font-size:10px;color:black;"> java.awt.GridLayout;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><strong><span style="font-size:10px;color:#7f0055;">import</span></strong><span style="font-size:10px;color:black;"> java.awt.event.ActionEvent;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><strong><span style="font-size:10px;color:#7f0055;">import</span></strong><span style="font-size:10px;color:black;"> java.awt.event.ActionListener;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><strong><span style="font-size:10px;color:#7f0055;">import</span></strong><span style="font-size:10px;color:black;"> javax.swing.JButton;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><strong><span style="font-size:10px;color:#7f0055;">import</span></strong><span style="font-size:10px;color:black;"> javax.swing.JFrame;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><strong><span style="font-size:10px;color:#7f0055;">import</span></strong><span style="font-size:10px;color:black;"> javax.swing.JLabel;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><strong><span style="font-size:10px;color:#7f0055;">import</span></strong><span style="font-size:10px;color:black;"> javax.swing.JPanel;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><strong><span style="font-size:10px;color:#7f0055;">import</span></strong><span style="font-size:10px;color:black;"> javax.swing.JTextField;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><strong><span style="font-size:10px;color:#7f0055;">import</span></strong><span style="font-size:10px;color:black;"> javax.swing.border.LineBorder;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><strong><span style="font-size:10px;color:#7f0055;">import</span></strong><span style="font-size:10px;color:black;"> javax.swing.border.TitledBorder;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:#3f5fbf;">/**</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#3f5fbf;">*</span><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f9fbf;">@author</span></strong><span style="font-size:10px;color:black;"> Ferhan Akman</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#3f5fbf;">*</span><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f9fbf;">@date</span></strong><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#3f5fbf;">24.09.2008</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#3f5fbf;">*/</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><strong><span style="font-size:10px;color:#7f0055;">public</span></strong><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">class</span></strong><span style="font-size:10px;color:black;"> GUI </span><strong><span style="font-size:10px;color:#7f0055;">extends</span></strong><span style="font-size:10px;color:black;"> JFrame </span><strong><span style="font-size:10px;color:#7f0055;">implements</span></strong><span style="font-size:10px;color:black;"> ActionListener{</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#3f7f5f;">// girilen sayı kadar fibonacci getirelecek kısım</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> JPanel </span><span style="font-size:10px;color:#0000c0;">ustPanel</span><span style="font-size:10px;color:black;"> = </span><strong><span style="font-size:10px;color:#7f0055;">new</span></strong><span style="font-size:10px;color:black;"> JPanel( </span><strong><span style="font-size:10px;color:#7f0055;">new</span></strong><span style="font-size:10px;color:black;"> GridLayout( 2,2,5,5));</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> JTextField </span><span style="font-size:10px;color:#0000c0;">numberJTF</span><span style="font-size:10px;color:black;"> = </span><strong><span style="font-size:10px;color:#7f0055;">new</span></strong><span style="font-size:10px;color:black;"> JTextField();</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> JButton </span><span style="font-size:10px;color:#0000c0;">goJBtn</span><span style="font-size:10px;color:black;"> = </span><strong><span style="font-size:10px;color:#7f0055;">new</span></strong><span style="font-size:10px;color:black;"> JButton (</span><span style="font-size:10px;color:#2a00ff;">&#8216; Go &#8216;</span><span style="font-size:10px;color:black;">);</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> JLabel </span><span style="font-size:10px;color:#0000c0;">fibonacciJLabel</span><span style="font-size:10px;color:black;"> = </span><strong><span style="font-size:10px;color:#7f0055;">new</span></strong><span style="font-size:10px;color:black;"> JLabel();</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#3f7f5f;">//sıradaki fibonacci sayısını bulmakta kullanacağımız alan</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> JPanel </span><span style="font-size:10px;color:#0000c0;">altPanel</span><span style="font-size:10px;color:black;"> = </span><strong><span style="font-size:10px;color:#7f0055;">new</span></strong><span style="font-size:10px;color:black;"> JPanel( </span><strong><span style="font-size:10px;color:#7f0055;">new</span></strong><span style="font-size:10px;color:black;"> GridLayout (2,2,5,5));</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">long</span></strong><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">n1</span><span style="font-size:10px;color:black;"> = 0;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">long</span></strong><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">n2</span><span style="font-size:10px;color:black;"> = 1;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">int</span></strong><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">count</span><span style="font-size:10px;color:black;"> = 1;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> JLabel </span><span style="font-size:10px;color:#0000c0;">nJLabel</span><span style="font-size:10px;color:black;"> = </span><strong><span style="font-size:10px;color:#7f0055;">new</span></strong><span style="font-size:10px;color:black;"> JLabel(</span><span style="font-size:10px;color:#2a00ff;">&#8216;1. Fibonacci sayısı: &#8216;</span><span style="font-size:10px;color:black;">);</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> JLabel </span><span style="font-size:10px;color:#0000c0;">nFibonacciJLabel</span><span style="font-size:10px;color:black;"> = </span><strong><span style="font-size:10px;color:#7f0055;">new</span></strong><span style="font-size:10px;color:black;"> JLabel(String.<em>valueOf</em>( </span><span style="font-size:10px;color:#0000c0;">n2</span><span style="font-size:10px;color:black;"> )); </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> JButton </span><span style="font-size:10px;color:#0000c0;">nextNumberButton</span><span style="font-size:10px;color:black;"> = </span><strong><span style="font-size:10px;color:#7f0055;">new</span></strong><span style="font-size:10px;color:black;"> JButton( </span><span style="font-size:10px;color:#2a00ff;">&#8216; Sıradaki Sayı &#8216;</span><span style="font-size:10px;color:black;">);</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">public</span></strong><span style="font-size:10px;color:black;"> GUI() {</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">super</span></strong><span style="font-size:10px;color:black;">( </span><span style="font-size:10px;color:#2a00ff;">&#8216;Fibonacci Numaraları  Ferhan Akman &#8216;</span><span style="font-size:10px;color:black;"> ); </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> JPanel panel = </span><strong><span style="font-size:10px;color:#7f0055;">new</span></strong><span style="font-size:10px;color:black;"> JPanel(</span><strong><span style="font-size:10px;color:#7f0055;">new</span></strong><span style="font-size:10px;color:black;"> GridLayout(2,1,10,10)); </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">ustPanel</span><span style="font-size:10px;color:black;">.setBorder( </span><strong><span style="font-size:10px;color:#7f0055;">new</span></strong><span style="font-size:10px;color:black;"> TitledBorder ( </span><strong><span style="font-size:10px;color:#7f0055;">new</span></strong><span style="font-size:10px;color:black;"> LineBorder (<span style="background:silver;">Color</span>.</span><em><span style="font-size:10px;color:#0000c0;">BLACK</span></em><span style="font-size:10px;color:black;">), </span><span style="font-size:10px;color:#2a00ff;">&#8216;SwingWorker Çalışma Sahası&#8217;</span><span style="font-size:10px;color:black;">));</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">goJBtn</span><span style="font-size:10px;color:black;">.addActionListener( </span><strong><span style="font-size:10px;color:#7f0055;">this</span></strong><span style="font-size:10px;color:black;"> );</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">ustPanel</span><span style="font-size:10px;color:black;">.add( </span><strong><span style="font-size:10px;color:#7f0055;">new</span></strong><span style="font-size:10px;color:black;"> JLabel ( </span><span style="font-size:10px;color:#2a00ff;">&#8216;Getirilecek Fibo. Sayısı: &#8216;</span><span style="font-size:10px;color:black;">));</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">ustPanel</span><span style="font-size:10px;color:black;">.add( </span><span style="font-size:10px;color:#0000c0;">numberJTF</span><span style="font-size:10px;color:black;"> );</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">ustPanel</span><span style="font-size:10px;color:black;">.add( </span><span style="font-size:10px;color:#0000c0;">goJBtn</span><span style="font-size:10px;color:black;"> );</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">ustPanel</span><span style="font-size:10px;color:black;">.add( </span><span style="font-size:10px;color:#0000c0;">fibonacciJLabel</span><span style="font-size:10px;color:black;"> );</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">altPanel</span><span style="font-size:10px;color:black;">.setBorder( </span><strong><span style="font-size:10px;color:#7f0055;">new</span></strong><span style="font-size:10px;color:black;"> TitledBorder ( </span><strong><span style="font-size:10px;color:#7f0055;">new</span></strong><span style="font-size:10px;color:black;"> LineBorder (<span style="background:silver;">Color</span>.</span><em><span style="font-size:10px;color:#0000c0;">BLACK</span></em><span style="font-size:10px;color:black;">), </span><span style="font-size:10px;color:#2a00ff;">&#8216;SwingWorker Olmayan Kısım&#8217;</span><span style="font-size:10px;color:black;">));</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">nextNumberButton</span><span style="font-size:10px;color:black;">.addActionListener( </span><strong><span style="font-size:10px;color:#7f0055;">this</span></strong><span style="font-size:10px;color:black;"> );</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">altPanel</span><span style="font-size:10px;color:black;">.add ( </span><span style="font-size:10px;color:#0000c0;">nJLabel</span><span style="font-size:10px;color:black;"> );</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">altPanel</span><span style="font-size:10px;color:black;">.add ( </span><span style="font-size:10px;color:#0000c0;">nFibonacciJLabel</span><span style="font-size:10px;color:black;"> );</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">altPanel</span><span style="font-size:10px;color:black;">.add ( </span><span style="font-size:10px;color:#0000c0;">nextNumberButton</span><span style="font-size:10px;color:black;"> );</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> panel.add( </span><span style="font-size:10px;color:#0000c0;">ustPanel</span><span style="font-size:10px;color:black;"> );</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> panel.add ( </span><span style="font-size:10px;color:#0000c0;">altPanel</span><span style="font-size:10px;color:black;"> );</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> setContentPane ( panel );</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> setVisible( </span><strong><span style="font-size:10px;color:#7f0055;">true</span></strong><span style="font-size:10px;color:black;"> );</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> setSize( 455, 200 ); </span><span style="font-size:10px;color:#3f7f5f;">// pack();</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> setDefaultCloseOperation(</span><em><span style="font-size:10px;color:#0000c0;">EXIT_ON_CLOSE</span></em><span style="font-size:10px;color:black;">);</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> }</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">public</span></strong><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">void</span></strong><span style="font-size:10px;color:black;"> actionPerformed(ActionEvent e) {</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> Object obj = e.getSource();</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> JButton button = (JButton) obj;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">if</span></strong><span style="font-size:10px;color:black;">( button == </span><span style="font-size:10px;color:#0000c0;">goJBtn</span><span style="font-size:10px;color:black;"> ){</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">long</span></strong><span style="font-size:10px;color:black;"> n;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">try</span></strong><span style="font-size:10px;color:black;"> {</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> n = Long.<em>parseLong</em>( </span><span style="font-size:10px;color:#0000c0;">numberJTF</span><span style="font-size:10px;color:black;">.getText() );</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> } </span><strong><span style="font-size:10px;color:#7f0055;">catch</span></strong><span style="font-size:10px;color:black;"> (NumberFormatException e1) {</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">fibonacciJLabel</span><span style="font-size:10px;color:black;">.setText( </span><span style="font-size:10px;color:#2a00ff;">&#8216; Tam sayı girin! &#8216;</span><span style="font-size:10px;color:black;">);</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">return</span></strong><span style="font-size:10px;color:black;">;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> }</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">fibonacciJLabel</span><span style="font-size:10px;color:black;">.setText( </span><span style="font-size:10px;color:#2a00ff;">&#8216; Hesaplanıyor&#8230; &#8216;</span><span style="font-size:10px;color:black;"> );</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> FibonacciCalculator task = </span><strong><span style="font-size:10px;color:#7f0055;">new</span></strong><span style="font-size:10px;color:black;"> FibonacciCalculator(n , </span><span style="font-size:10px;color:#0000c0;">fibonacciJLabel</span><span style="font-size:10px;color:black;">);</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> task.execute();</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> }</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">if</span></strong><span style="font-size:10px;color:black;"> ( button == </span><span style="font-size:10px;color:#0000c0;">nextNumberButton</span><span style="font-size:10px;color:black;"> ){</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">long</span></strong><span style="font-size:10px;color:black;"> temp = </span><span style="font-size:10px;color:#0000c0;">n1</span><span style="font-size:10px;color:black;"> + </span><span style="font-size:10px;color:#0000c0;">n2</span><span style="font-size:10px;color:black;">;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">n1</span><span style="font-size:10px;color:black;"> = </span><span style="font-size:10px;color:#0000c0;">n2</span><span style="font-size:10px;color:black;">;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">n2</span><span style="font-size:10px;color:black;"> = temp;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> ++</span><span style="font-size:10px;color:#0000c0;">count</span><span style="font-size:10px;color:black;">;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">nJLabel</span><span style="font-size:10px;color:black;">.setText( </span><span style="font-size:10px;color:#0000c0;">count</span><span style="font-size:10px;color:black;"> + </span><span style="font-size:10px;color:#2a00ff;">&#8216;. Fibonacci sayısı: &#8216;</span><span style="font-size:10px;color:black;">);</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">nFibonacciJLabel</span><span style="font-size:10px;color:black;">.setText(String.<em>valueOf</em>( </span><span style="font-size:10px;color:#0000c0;">n2</span><span style="font-size:10px;color:black;"> ));</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> }</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> }</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">public</span></strong><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">static</span></strong><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">void</span></strong><span style="font-size:10px;color:black;"> main(String[] args) {</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> GUI app = </span><strong><span style="font-size:10px;color:#7f0055;">new</span></strong><span style="font-size:10px;color:black;"> GUI();</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> }</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;">}</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;"><span style="color:#000000;"> </span></span></p>
<p class="MsoNormal" style="line-height:normal;text-align:justify;margin:0;"><span style="font-size:100%;color:#000000;"> </span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="text-align:justify;margin:0 0 10pt;"><span style="font-size:100%;color:#000000;"> Hazırladığımız Programın Ekran Görüntüleri:</span></p>
<p class="MsoNormal" style="text-align:justify;margin:0 0 10pt;"><span style="font-size:100%;color:#000000;"><img src="http://img526.imageshack.us/img526/7594/55770605sa1.jpg" alt="" /> <a href="http://img526.imageshack.us/img526/7594/55770605sa1.jpg">Ekran Görüntüsü &#8211; 1</a></span></p>
<p class="MsoNormal" style="text-align:justify;margin:0 0 10pt;"><span style="font-size:100%;color:#000000;"><a href="http://img526.imageshack.us/img526/7594/55770605sa1.jpg"></a><img src="http://img135.imageshack.us/img135/3839/33296597io2.jpg" alt="" /> <a href="http://img135.imageshack.us/img135/3839/33296597io2.jpg">Ekran Görüntüsü &#8211; 2</a></span></p>
<p class="MsoNormal" style="text-align:justify;margin:0 0 10pt;"><span style="font-size:100%;color:#000000;"><a href="http://img135.imageshack.us/img135/3839/33296597io2.jpg"></a><img src="http://img135.imageshack.us/img135/9751/48362376ee9.jpg" alt="" /> <a href="http://img135.imageshack.us/img135/9751/48362376ee9.jpg">Ekran Görüntüsü &#8211; 3</a></span></p>
<p class="MsoNormal" style="text-align:justify;margin:0 0 10pt;"><span style="font-size:100%;color:#000000;">Kodlar açık olduğun satır satır açıklamada bulunmuyorum, örneğin orjinal halini daitelin kitabından bulabilirsiniz. açıklama gerekebileceğini düşündüğüm yerlerede kod içerisinde comment olarak gerekli açıklamaları yaptım.</span></p>
<p>Soru, görüş ve önerilerinizi bekliyorum&#8230;  <strong>yazan: Mustafa Ferhan Akman</strong></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[SwingWorker Thread Kullanımı‏ &amp; Uygulama]]></title>
<link>http://ferhanakman.wordpress.com/?p=10</link>
<pubDate>Wed, 24 Sep 2008 03:22:00 +0000</pubDate>
<dc:creator>ferhanakman</dc:creator>
<guid>http://ferhanakman.wordpress.com/?p=10</guid>
<description><![CDATA[İnternet üzerinde bu konuyu işleyen ilk ve tek Türkçe dökümandır. Türk yazılımcı kardeşlerime bir fa]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p class="MsoNormal" style="text-align:justify;margin:0 0 10pt;">İnternet üzerinde bu konuyu işleyen ilk ve tek Türkçe dökümandır. Türk yazılımcı kardeşlerime bir faydam olması dileği ile&#8230; </p>
<p class="MsoNormal" style="text-align:justify;margin:0 0 10pt;"><span style="font-size:100%;"><span style="color:#000000;">Multi-threading uygulamalarımızda Swing kullanacağımız zaman dikkat edilmesi gereken 2 nokta var.</span></span></p>
<p class="MsoListParagraphCxSpFirst" style="text-indent:-18pt;text-align:justify;margin:0 0 0 36pt;"><span style="color:#000000;"><span style="font-size:100%;color:#ff0000;"><strong>1-</strong></span><span style="font-weight:normal;line-height:normal;font-style:normal;font-variant:normalfont-size:7;"> </span><span style="font-size:100%;">Zaman alan işlemlerin </span></span><em><span style="line-height:115%;font-size:11px;color:#333333;" lang="EN-US">Event Dispatch Thread </span></em><span style="font-size:100%;"><span style="color:#000000;">üzerinde koşturulmaması gerekir. Aksi takdirde programımız işlem yaparken yanıt veremez hale gelecektir. </span></span></p>
<p class="MsoListParagraphCxSpLast" style="text-indent:-18pt;text-align:justify;margin:0 0 10pt 36pt;"><span style="color:#000000;"><span style="font-size:100%;color:#ff0000;"><strong>2-</strong></span><span style="font-weight:normal;line-height:normal;font-style:normal;font-variant:normalfont-size:7;"> </span><span style="font-size:100%;">Programımızda Swing ile ilgili kullanmış olduğumuz tüm componentlerin </span></span><em><span style="line-height:115%;font-size:11px;color:#333333;" lang="EN-US">Event Dispatch Thread </span></em><span style="font-size:100%;"><span style="color:#000000;">üzerinden koşturulması.</span></span></p>
<p class="MsoNormal" style="text-align:justify;margin:0 0 10pt;"><span style="font-size:100%;color:#000000;">Yukarıdaki veriler ışığında şu sonuç ortaya çıkıyor:<br />
Programımız için Swing componentlerini kullanan bir GUI tasarladığımızda, bize en az 2 adet Thread lazım. <span style="color:#ffff99;"><span style="color:#000000;">1 Thread&#8217;i uzun zaman alacak işlemlerimiz için kullanacağız, diğer Thread&#8217;imizide yani</span> </span></span><span style="color:#ffff99;"><em><span style="line-height:115%;font-size:11px;color:#333333;" lang="EN-US"><span style="background-color:#ffffff;font-family:Calibri;">Event Dispatch Thread</span></span></em><span style="font-size:100%;color:#000000;"><span style="background-color:#ffffff;"> </span><span style="background-color:#ffff99;">&#8216;ini</span></span></span><span style="background-color:#ffff99;"><span style="line-height:115%;font-size:11px;color:#333333;" lang="EN-US"><span style="font-family:Calibri;">de </span></span><span style="font-size:100%;"><span style="color:#000000;">tüm GUI bileşenleri için kullanacağız. Zaman alan işlemlerimiz programın arka tarafında çalışıp, işlemini tamamladığında GUI&#8217;mizi update edecek. Ve sonuç olarak  kusursuz işleyen becerekli bir programa sahip olacağız. </span></span></span>
</p>
<p class="MsoNormal" style="text-align:justify;margin:0 0 10pt;"><span style="font-size:100%;"><span style="color:#000000;">SwingWorker&#8217;ın yapısında bulunan metodlar: </span></span></p>
<p class="MsoNormal" style="text-align:justify;margin:0 0 10pt 35.4pt;"><span style="background:yellow;line-height:115%;color:black;">doInBackground()</span><span style="line-height:115%;font-size:10px;color:black;">:</span><span style="font-size:100%;"><span style="color:#000000;">Uzun süren işlemlerin / hesaplamaların yapılacağı zaman çağırılacak thread. </span></span></p>
<p class="MsoNormal" style="text-align:justify;margin:0 0 10pt 35.4pt;"><span style="background:yellow;line-height:115%;color:black;">done()</span><span style="line-height:115%;font-size:10px;color:black;">: doInBackground()</span><span style="font-size:100%;color:#000000;"> dan gelen sonuçları </span><em><span style="line-height:115%;font-size:11px;color:#333333;" lang="EN-US"><span style="font-family:Calibri;">Event Dispatch Thread </span></span></em><span style="font-size:100%;"><span style="color:#000000;">üzerinde koşturur. </span></span></p>
<p class="MsoNormal" style="text-align:justify;margin:0 0 10pt 35.4pt;"><span style="background:yellow;line-height:115%;color:black;">execute()</span><span style="font-size:100%;"><span style="color:#000000;">: SwingWorker objesinde bir threadi çalıştırmak için çağırdığımız metod.</span></span></p>
<p class="MsoNormal" style="text-align:justify;margin:0 0 10pt 35.4pt;"><span style="background:yellow;line-height:115%;color:black;">get()</span><span style="font-size:100%;"><span style="color:#000000;">: Programımız tarafından yapılan hesap işleminin tamamlanmasını bekler ve hesap işleminden çıkan sonucu döndür.</span></span></p>
<p class="MsoNormal" style="text-align:justify;margin:0 0 10pt 35.4pt;"><span style="background:yellow;line-height:115%;color:black;">publish()</span><span style="color:#000000;"><span style="font-size:100%;">: </span><span style="line-height:115%;font-size:10px;color:black;">doInBackground() </span><span style="font-size:100%;">metodundan gelen orta sonuçları </span></span><em><span style="line-height:115%;font-size:11px;color:#333333;" lang="EN-US"><span style="font-family:Calibri;">Event Dispatch Thread </span></span></em><span style="font-size:100%;"><span style="color:#000000;">tarafında koşturulması için gönderir.</span></span></p>
<p class="MsoNormal" style="text-align:justify;margin:0 0 10pt 35.4pt;"><span style="background:yellow;line-height:115%;color:black;">process ()</span><span style="color:#000000;"><span style="font-size:100%;">: </span><span style="line-height:115%;font-size:10px;color:black;">publish()</span><span style="font-size:100%;">metodundan gelen orta sonuçları alır ve </span></span><em><span style="line-height:115%;font-size:11px;color:#333333;" lang="EN-US"><span style="font-family:Calibri;">Event Dispatch Thread </span></span></em><span style="font-size:100%;"><span style="color:#000000;">tarafında koşturulması için gönderir.</span></span></p>
<p class="MsoNormal" style="text-align:justify;margin:0 0 10pt 35.4pt;"><span style="background:yellow;line-height:115%;color:black;">setProgress()</span><span style="font-size:100%;"><span style="color:#000000;">: Thread&#8217;imizle ilgili ara değerler göndermek için kullanıyoruz. Genelde Progress bar&#8217;ı update ederken kullanıyor.</span></span></p>
<p class="MsoNormal" style="text-align:justify;margin:0 0 10pt 35.4pt;"><span style="font-size:100%;color:#000000;"> </span></p>
<p class="MsoNormal" style="text-align:justify;margin:0 0 10pt 35.4pt;"><span style="font-size:100%;"><span style="color:#000000;">Şimdi basit bir örnek ile inceleyelim.</span></span><span style="font-size:100%;color:#000000;"><br />
Yapacağımız örneği genel olarak açıklayacak olursak; Örnektekteki programımız 2 classdan oluşuyor.<br />
Fibonacci sayılarının nasıl bulunduğunu göreceğiz. <span style="font-weight:normal;" lang="EN-US"><span style="font-family:Calibri;font-size:85%;color:#4f81bd;"><em>FibonacciCalculator </em><span style="font-family:Bookman Old Style;font-size:100%;color:#000000;">classı swingWorker&#8217;ımızın çalışacağı alan ve GUI classıda isminden de anlaşılabileceği üzere Kullanıcı arayüzünün bulunduğu kısım. Şimdi dilerseniz kodlara ve içerisinde yorumlara göz atalım..</span></span></span></span>
</p>
<p class="MsoCaption" style="margin:0 0 10pt;"><span style="color:#4f81bd;"><span style="font-family:Calibri;"><span lang="EN-US"><strong>Class </strong></span><em><span style="font-weight:normal;" lang="EN-US">FibonacciCalculator</span></em><span lang="EN-US"><strong> </strong></span></span></span></p>
<table class="MsoTableGrid" style="border-right:medium none;border-top:medium none;border-left:medium none;border-bottom:medium none;border-collapse:collapse;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="background:#f2f2f2;width:460.6pt;border:black 1pt solid;padding:0 5.4pt;" width="614" valign="top"><span style="font-size:10px;">     </p>
<p class="MsoNormal" style="margin:0 0 10pt;"><strong><span style="line-height:115%;font-size:10px;color:#7f0055;">import</span></strong><span style="line-height:115%;font-size:10px;color:black;"> java.util.concurrent.ExecutionException;<br />
</span><strong><span style="font-size:10px;color:#7f0055;">import</span></strong><span style="font-size:10px;color:black;"> javax.swing.JLabel;<br />
</span><strong><span style="font-size:10px;color:#7f0055;">import</span></strong><span style="font-size:10px;color:black;"> javax.swing.SwingWorker;</span></p>
<p><span style="font-size:10px;"><span style="color:#000000;"> </span></span>
</p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:#3f5fbf;">/**</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#3f5fbf;">*</span><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f9fbf;">@author</span></strong><span style="font-size:10px;color:black;"> Ferhan Akman</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#3f5fbf;">*</span><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f9fbf;">@date</span></strong><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#3f5fbf;">24.09.2008</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#3f5fbf;">*/</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><strong><span style="font-size:10px;color:#7f0055;">public</span></strong><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">class</span></strong><span style="font-size:10px;color:black;"> FibonacciCalculator </span><strong><span style="font-size:10px;color:#7f0055;">extends</span></strong><span style="font-size:10px;color:black;"> SwingWorker {</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">private</span></strong><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">final</span></strong><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">long</span></strong><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">n</span><span style="font-size:10px;color:black;">;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">private</span></strong><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">final</span></strong><span style="font-size:10px;color:black;"> JLabel </span><span style="font-size:10px;color:#0000c0;">resultJLabel</span><span style="font-size:10px;color:black;">;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">public</span></strong><span style="font-size:10px;color:black;"> FibonacciCalculator( </span><strong><span style="font-size:10px;color:#7f0055;">long</span></strong><span style="font-size:10px;color:black;"> no, JLabel label) {</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">n</span><span style="font-size:10px;color:black;"> = no;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">resultJLabel</span><span style="font-size:10px;color:black;"> = label;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> }</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;"><span style="color:#000000;"> </span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#3f7f5f;">//fibonacci(long number) fonksiyonnuna hesaplayacağımız elemanın  sayısını yazıyoruz. </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">public</span></strong><span style="font-size:10px;color:black;"> Object doInBackground(){</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">long</span></strong><span style="font-size:10px;color:black;"> nthFib = fibonacci ( </span><span style="font-size:10px;color:#0000c0;">n</span><span style="font-size:10px;color:black;"> );</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">return</span></strong><span style="font-size:10px;color:black;"> String.<em>valueOf</em>( nthFib );</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> }</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;"><span style="color:#000000;"> </span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#3f7f5f;">/*</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:#3f7f5f;"> doInBackground() fonksiyonundan geriye dönecek olan değer done() fonksiyonuna gelir. burada koşullara göre GUI üzerinde değişiklik yapmasını söylüyoruz. işlemimiz tamamlandığında, sonuç get() fonksiyona gelecek. biz burada resultJLabel&#8217;ına sonucu yazmasını söylüyoruz. </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:#3f7f5f;"> */</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">protected</span></strong><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">void</span></strong><span style="font-size:10px;color:black;"> done(){</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">try</span></strong><span style="font-size:10px;color:black;"> {</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">resultJLabel</span><span style="font-size:10px;color:black;">.setText ( (String) get() );</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> } </span><strong><span style="font-size:10px;color:#7f0055;">catch</span></strong><span style="font-size:10px;color:black;"> (InterruptedException e) {</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">resultJLabel</span><span style="font-size:10px;color:black;">.setText(</span><span style="font-size:10px;color:#2a00ff;">&#8216; işlem kullanıcı tarafından durduruldu!&#8217;</span><span style="font-size:10px;color:black;">);</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> } </span><strong><span style="font-size:10px;color:#7f0055;">catch</span></strong><span style="font-size:10px;color:black;"> (ExecutionException e) {</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">resultJLabel</span><span style="font-size:10px;color:black;">.setText(</span><span style="font-size:10px;color:#2a00ff;">&#8216; işlem çalışırken çalışma hatası meydana geldi!&#8217;</span><span style="font-size:10px;color:black;">);</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> }</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> }</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#3f7f5f;">//recursive bir fonksiyon kullanarak fibonacci sayısını hesaplıyoruz.</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">private</span></strong><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">long</span></strong><span style="font-size:10px;color:black;"> fibonacci( </span><strong><span style="font-size:10px;color:#7f0055;">long</span></strong><span style="font-size:10px;color:black;"> number) {</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">if</span></strong><span style="font-size:10px;color:black;">( number == 0  number == 1 )</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">return</span></strong><span style="font-size:10px;color:black;"> number;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">else</span></strong></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">return</span></strong><span style="font-size:10px;color:black;"> fibonacci ( number &#8211; 1 ) + fibonacci( number -2 );</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> }</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;">}</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:100%;color:#000000;"> </span></p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p></span></td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="text-align:justify;margin:0 0 10pt;"><span style="font-size:100%;color:#000000;"> </span></p>
<p class="MsoNormal" style="text-align:justify;margin:0 0 10pt;"><span style="font-size:100%;color:#000000;"> </span><span style="color:#4f81bd;"><span style="font-family:Calibri;"><span lang="EN-US"><strong>Class </strong></span><em><span style="font-weight:normal;" lang="EN-US">GUI</span></em></span></span></p>
<table class="MsoTableGrid" style="border-right:medium none;border-top:medium none;border-left:medium none;border-bottom:medium none;border-collapse:collapse;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="background:#f2f2f2;width:460.6pt;border:black 1pt solid;padding:0 5.4pt;" width="614" valign="top">
<p class="MsoNormal" style="line-height:normal;margin:0;"><strong><span style="font-size:10px;color:#7f0055;">import</span></strong><span style="font-size:10px;color:black;"> <span style="background:silver;">java.awt.Color</span>;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><strong><span style="font-size:10px;color:#7f0055;">import</span></strong><span style="font-size:10px;color:black;"> java.awt.GridLayout;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><strong><span style="font-size:10px;color:#7f0055;">import</span></strong><span style="font-size:10px;color:black;"> java.awt.event.ActionEvent;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><strong><span style="font-size:10px;color:#7f0055;">import</span></strong><span style="font-size:10px;color:black;"> java.awt.event.ActionListener;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><strong><span style="font-size:10px;color:#7f0055;">import</span></strong><span style="font-size:10px;color:black;"> javax.swing.JButton;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><strong><span style="font-size:10px;color:#7f0055;">import</span></strong><span style="font-size:10px;color:black;"> javax.swing.JFrame;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><strong><span style="font-size:10px;color:#7f0055;">import</span></strong><span style="font-size:10px;color:black;"> javax.swing.JLabel;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><strong><span style="font-size:10px;color:#7f0055;">import</span></strong><span style="font-size:10px;color:black;"> javax.swing.JPanel;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><strong><span style="font-size:10px;color:#7f0055;">import</span></strong><span style="font-size:10px;color:black;"> javax.swing.JTextField;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><strong><span style="font-size:10px;color:#7f0055;">import</span></strong><span style="font-size:10px;color:black;"> javax.swing.border.LineBorder;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><strong><span style="font-size:10px;color:#7f0055;">import</span></strong><span style="font-size:10px;color:black;"> javax.swing.border.TitledBorder;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:#3f5fbf;">/**</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#3f5fbf;">*</span><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f9fbf;">@author</span></strong><span style="font-size:10px;color:black;"> Ferhan Akman</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#3f5fbf;">*</span><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f9fbf;">@date</span></strong><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#3f5fbf;">24.09.2008</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#3f5fbf;">*/</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><strong><span style="font-size:10px;color:#7f0055;">public</span></strong><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">class</span></strong><span style="font-size:10px;color:black;"> GUI </span><strong><span style="font-size:10px;color:#7f0055;">extends</span></strong><span style="font-size:10px;color:black;"> JFrame </span><strong><span style="font-size:10px;color:#7f0055;">implements</span></strong><span style="font-size:10px;color:black;"> ActionListener{</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#3f7f5f;">// girilen sayı kadar fibonacci getirelecek kısım</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> JPanel </span><span style="font-size:10px;color:#0000c0;">ustPanel</span><span style="font-size:10px;color:black;"> = </span><strong><span style="font-size:10px;color:#7f0055;">new</span></strong><span style="font-size:10px;color:black;"> JPanel( </span><strong><span style="font-size:10px;color:#7f0055;">new</span></strong><span style="font-size:10px;color:black;"> GridLayout( 2,2,5,5));</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> JTextField </span><span style="font-size:10px;color:#0000c0;">numberJTF</span><span style="font-size:10px;color:black;"> = </span><strong><span style="font-size:10px;color:#7f0055;">new</span></strong><span style="font-size:10px;color:black;"> JTextField();</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> JButton </span><span style="font-size:10px;color:#0000c0;">goJBtn</span><span style="font-size:10px;color:black;"> = </span><strong><span style="font-size:10px;color:#7f0055;">new</span></strong><span style="font-size:10px;color:black;"> JButton (</span><span style="font-size:10px;color:#2a00ff;">&#8216; Go &#8216;</span><span style="font-size:10px;color:black;">);</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> JLabel </span><span style="font-size:10px;color:#0000c0;">fibonacciJLabel</span><span style="font-size:10px;color:black;"> = </span><strong><span style="font-size:10px;color:#7f0055;">new</span></strong><span style="font-size:10px;color:black;"> JLabel();</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#3f7f5f;">//sıradaki fibonacci sayısını bulmakta kullanacağımız alan</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> JPanel </span><span style="font-size:10px;color:#0000c0;">altPanel</span><span style="font-size:10px;color:black;"> = </span><strong><span style="font-size:10px;color:#7f0055;">new</span></strong><span style="font-size:10px;color:black;"> JPanel( </span><strong><span style="font-size:10px;color:#7f0055;">new</span></strong><span style="font-size:10px;color:black;"> GridLayout (2,2,5,5));</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">long</span></strong><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">n1</span><span style="font-size:10px;color:black;"> = 0;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">long</span></strong><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">n2</span><span style="font-size:10px;color:black;"> = 1;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">int</span></strong><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">count</span><span style="font-size:10px;color:black;"> = 1;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> JLabel </span><span style="font-size:10px;color:#0000c0;">nJLabel</span><span style="font-size:10px;color:black;"> = </span><strong><span style="font-size:10px;color:#7f0055;">new</span></strong><span style="font-size:10px;color:black;"> JLabel(</span><span style="font-size:10px;color:#2a00ff;">&#8216;1. Fibonacci sayısı: &#8216;</span><span style="font-size:10px;color:black;">);</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> JLabel </span><span style="font-size:10px;color:#0000c0;">nFibonacciJLabel</span><span style="font-size:10px;color:black;"> = </span><strong><span style="font-size:10px;color:#7f0055;">new</span></strong><span style="font-size:10px;color:black;"> JLabel(String.<em>valueOf</em>( </span><span style="font-size:10px;color:#0000c0;">n2</span><span style="font-size:10px;color:black;"> )); </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> JButton </span><span style="font-size:10px;color:#0000c0;">nextNumberButton</span><span style="font-size:10px;color:black;"> = </span><strong><span style="font-size:10px;color:#7f0055;">new</span></strong><span style="font-size:10px;color:black;"> JButton( </span><span style="font-size:10px;color:#2a00ff;">&#8216; Sıradaki Sayı &#8216;</span><span style="font-size:10px;color:black;">);</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">public</span></strong><span style="font-size:10px;color:black;"> GUI() {</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">super</span></strong><span style="font-size:10px;color:black;">( </span><span style="font-size:10px;color:#2a00ff;">&#8216;Fibonacci Numaraları  Ferhan Akman &#8216;</span><span style="font-size:10px;color:black;"> ); </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> JPanel panel = </span><strong><span style="font-size:10px;color:#7f0055;">new</span></strong><span style="font-size:10px;color:black;"> JPanel(</span><strong><span style="font-size:10px;color:#7f0055;">new</span></strong><span style="font-size:10px;color:black;"> GridLayout(2,1,10,10)); </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">ustPanel</span><span style="font-size:10px;color:black;">.setBorder( </span><strong><span style="font-size:10px;color:#7f0055;">new</span></strong><span style="font-size:10px;color:black;"> TitledBorder ( </span><strong><span style="font-size:10px;color:#7f0055;">new</span></strong><span style="font-size:10px;color:black;"> LineBorder (<span style="background:silver;">Color</span>.</span><em><span style="font-size:10px;color:#0000c0;">BLACK</span></em><span style="font-size:10px;color:black;">), </span><span style="font-size:10px;color:#2a00ff;">&#8216;SwingWorker Çalışma Sahası&#8217;</span><span style="font-size:10px;color:black;">));</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">goJBtn</span><span style="font-size:10px;color:black;">.addActionListener( </span><strong><span style="font-size:10px;color:#7f0055;">this</span></strong><span style="font-size:10px;color:black;"> );</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">ustPanel</span><span style="font-size:10px;color:black;">.add( </span><strong><span style="font-size:10px;color:#7f0055;">new</span></strong><span style="font-size:10px;color:black;"> JLabel ( </span><span style="font-size:10px;color:#2a00ff;">&#8216;Getirilecek Fibo. Sayısı: &#8216;</span><span style="font-size:10px;color:black;">));</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">ustPanel</span><span style="font-size:10px;color:black;">.add( </span><span style="font-size:10px;color:#0000c0;">numberJTF</span><span style="font-size:10px;color:black;"> );</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">ustPanel</span><span style="font-size:10px;color:black;">.add( </span><span style="font-size:10px;color:#0000c0;">goJBtn</span><span style="font-size:10px;color:black;"> );</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">ustPanel</span><span style="font-size:10px;color:black;">.add( </span><span style="font-size:10px;color:#0000c0;">fibonacciJLabel</span><span style="font-size:10px;color:black;"> );</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">altPanel</span><span style="font-size:10px;color:black;">.setBorder( </span><strong><span style="font-size:10px;color:#7f0055;">new</span></strong><span style="font-size:10px;color:black;"> TitledBorder ( </span><strong><span style="font-size:10px;color:#7f0055;">new</span></strong><span style="font-size:10px;color:black;"> LineBorder (<span style="background:silver;">Color</span>.</span><em><span style="font-size:10px;color:#0000c0;">BLACK</span></em><span style="font-size:10px;color:black;">), </span><span style="font-size:10px;color:#2a00ff;">&#8216;SwingWorker Olmayan Kısım&#8217;</span><span style="font-size:10px;color:black;">));</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">nextNumberButton</span><span style="font-size:10px;color:black;">.addActionListener( </span><strong><span style="font-size:10px;color:#7f0055;">this</span></strong><span style="font-size:10px;color:black;"> );</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">altPanel</span><span style="font-size:10px;color:black;">.add ( </span><span style="font-size:10px;color:#0000c0;">nJLabel</span><span style="font-size:10px;color:black;"> );</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">altPanel</span><span style="font-size:10px;color:black;">.add ( </span><span style="font-size:10px;color:#0000c0;">nFibonacciJLabel</span><span style="font-size:10px;color:black;"> );</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">altPanel</span><span style="font-size:10px;color:black;">.add ( </span><span style="font-size:10px;color:#0000c0;">nextNumberButton</span><span style="font-size:10px;color:black;"> );</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> panel.add( </span><span style="font-size:10px;color:#0000c0;">ustPanel</span><span style="font-size:10px;color:black;"> );</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> panel.add ( </span><span style="font-size:10px;color:#0000c0;">altPanel</span><span style="font-size:10px;color:black;"> );</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> setContentPane ( panel );</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> setVisible( </span><strong><span style="font-size:10px;color:#7f0055;">true</span></strong><span style="font-size:10px;color:black;"> );</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> setSize( 455, 200 ); </span><span style="font-size:10px;color:#3f7f5f;">// pack();</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> setDefaultCloseOperation(</span><em><span style="font-size:10px;color:#0000c0;">EXIT_ON_CLOSE</span></em><span style="font-size:10px;color:black;">);</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> }</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">public</span></strong><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">void</span></strong><span style="font-size:10px;color:black;"> actionPerformed(ActionEvent e) {</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> Object obj = e.getSource();</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> JButton button = (JButton) obj;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">if</span></strong><span style="font-size:10px;color:black;">( button == </span><span style="font-size:10px;color:#0000c0;">goJBtn</span><span style="font-size:10px;color:black;"> ){</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">long</span></strong><span style="font-size:10px;color:black;"> n;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">try</span></strong><span style="font-size:10px;color:black;"> {</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> n = Long.<em>parseLong</em>( </span><span style="font-size:10px;color:#0000c0;">numberJTF</span><span style="font-size:10px;color:black;">.getText() );</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> } </span><strong><span style="font-size:10px;color:#7f0055;">catch</span></strong><span style="font-size:10px;color:black;"> (NumberFormatException e1) {</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">fibonacciJLabel</span><span style="font-size:10px;color:black;">.setText( </span><span style="font-size:10px;color:#2a00ff;">&#8216; Tam sayı girin! &#8216;</span><span style="font-size:10px;color:black;">);</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">return</span></strong><span style="font-size:10px;color:black;">;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> }</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">fibonacciJLabel</span><span style="font-size:10px;color:black;">.setText( </span><span style="font-size:10px;color:#2a00ff;">&#8216; Hesaplanıyor&#8230; &#8216;</span><span style="font-size:10px;color:black;"> );</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> FibonacciCalculator task = </span><strong><span style="font-size:10px;color:#7f0055;">new</span></strong><span style="font-size:10px;color:black;"> FibonacciCalculator(n , </span><span style="font-size:10px;color:#0000c0;">fibonacciJLabel</span><span style="font-size:10px;color:black;">);</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> task.execute();</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> }</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">if</span></strong><span style="font-size:10px;color:black;"> ( button == </span><span style="font-size:10px;color:#0000c0;">nextNumberButton</span><span style="font-size:10px;color:black;"> ){</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">long</span></strong><span style="font-size:10px;color:black;"> temp = </span><span style="font-size:10px;color:#0000c0;">n1</span><span style="font-size:10px;color:black;"> + </span><span style="font-size:10px;color:#0000c0;">n2</span><span style="font-size:10px;color:black;">;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">n1</span><span style="font-size:10px;color:black;"> = </span><span style="font-size:10px;color:#0000c0;">n2</span><span style="font-size:10px;color:black;">;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">n2</span><span style="font-size:10px;color:black;"> = temp;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> ++</span><span style="font-size:10px;color:#0000c0;">count</span><span style="font-size:10px;color:black;">;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">nJLabel</span><span style="font-size:10px;color:black;">.setText( </span><span style="font-size:10px;color:#0000c0;">count</span><span style="font-size:10px;color:black;"> + </span><span style="font-size:10px;color:#2a00ff;">&#8216;. Fibonacci sayısı: &#8216;</span><span style="font-size:10px;color:black;">);</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><span style="font-size:10px;color:#0000c0;">nFibonacciJLabel</span><span style="font-size:10px;color:black;">.setText(String.<em>valueOf</em>( </span><span style="font-size:10px;color:#0000c0;">n2</span><span style="font-size:10px;color:black;"> ));</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> }</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> }</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">public</span></strong><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">static</span></strong><span style="font-size:10px;color:black;"> </span><strong><span style="font-size:10px;color:#7f0055;">void</span></strong><span style="font-size:10px;color:black;"> main(String[] args) {</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> GUI app = </span><strong><span style="font-size:10px;color:#7f0055;">new</span></strong><span style="font-size:10px;color:black;"> GUI();</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;"> }</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;color:black;">}</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10px;"><span style="color:#000000;"> </span></span></p>
<p class="MsoNormal" style="line-height:normal;text-align:justify;margin:0;"><span style="font-size:100%;color:#000000;"> </span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="text-align:justify;margin:0 0 10pt;"><span style="font-size:100%;color:#000000;"><br />
Hazırladığımız Programın Ekran Görüntüleri:</span></p>
<p class="MsoNormal" style="text-align:justify;margin:0 0 10pt;"><span style="font-size:100%;color:#000000;"><img src="http://img526.imageshack.us/img526/7594/55770605sa1.jpg" alt="" /><br />
<a href="http://img526.imageshack.us/img526/7594/55770605sa1.jpg">Ekran Görüntüsü &#8211; 1</a></span></p>
<p class="MsoNormal" style="text-align:justify;margin:0 0 10pt;"><span style="font-size:100%;color:#000000;"><a href="http://img526.imageshack.us/img526/7594/55770605sa1.jpg"></a><img src="http://img135.imageshack.us/img135/3839/33296597io2.jpg" alt="" /><br />
<a href="http://img135.imageshack.us/img135/3839/33296597io2.jpg">Ekran Görüntüsü &#8211; 2</a></span></p>
<p class="MsoNormal" style="text-align:justify;margin:0 0 10pt;"><span style="font-size:100%;color:#000000;"><a href="http://img135.imageshack.us/img135/3839/33296597io2.jpg"></a><img src="http://img135.imageshack.us/img135/9751/48362376ee9.jpg" alt="" /><br />
<a href="http://img135.imageshack.us/img135/9751/48362376ee9.jpg">Ekran Görüntüsü &#8211; 3</a></span></p>
<p> 
</p>
<p class="MsoNormal" style="text-align:justify;margin:0 0 10pt;"><span style="font-size:100%;color:#000000;">Kodlar açık olduğun satır satır açıklamada bulunmuyorum, açıklama gerekebileceğini düşündüğüm yerlerede kod içerisinde comment olarak gerekli açıklamaları yaptım.</span></p>
<p>Soru, görüş ve önerilerinizi bekliyorum&#8230;</p>
<p><strong>yazan: Mustafa Ferhan Akman</strong></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[JAVA " SwingWorker " de bir hata...]]></title>
<link>http://ferhanakman.wordpress.com/2008/09/23/java-swingworker-de-bir-hata/</link>
<pubDate>Tue, 23 Sep 2008 04:32:00 +0000</pubDate>
<dc:creator>ferhanakman</dc:creator>
<guid>http://ferhanakman.wordpress.com/2008/09/23/java-swingworker-de-bir-hata/</guid>
<description><![CDATA[  JAVA SwingWorker ile uğraşıyorum.. ama bir yerde takıldım. Zira gerek elimdeki dökümanlar gerekse ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p class="MsoNormal" style="text-align:justify;margin:0 0 10pt 35.4pt;"> </p>
<p class="MsoCaption" style="margin:0 0 10pt;"><span style="color:#000000;" lang="EN-US">JAVA SwingWorker ile uğraşıyorum.. ama bir yerde takıldım. Zira gerek elimdeki dökümanlar gerekse internetteki tüm dökümanlar (java.sun.com dahil) diyorlar ki;</span></p>
<p class="MsoCaption" style="margin:0 0 10pt;"><span style="color:#4f81bd;"><span style="font-family:Calibri;"><span lang="EN-US"><strong></strong></span></span></span></p>
<table class="MsoTableGrid" style="border-right:medium none;border-top:medium none;border-left:medium none;border-bottom:medium none;border-collapse:collapse;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="background:#f2f2f2;width:460.6pt;border:black 1pt solid;padding:0 5.4pt;" width="614" valign="top"><span style="font-family:'Bookman Old Style',serif;"><span style="color:#000000;">    </p>
<p class="MsoNormal" style="line-height:normal;text-align:justify;margin:0;">public class Calculator <span style="color:#000000;">extends </span>SwingWorker{</p>
<p class="MsoNormal" style="line-height:normal;text-align:justify;margin:0;">public int doInBackground(){</p>
<p class="MsoNormal" style="line-height:normal;text-align:justify;margin:0;">int intNumber = 5;</p>
<p class="MsoNormal" style="line-height:normal;text-align:justify;margin:0;">&#8230;</p>
<p class="MsoNormal" style="line-height:normal;text-align:justify;margin:0;">&#8230;</p>
<p class="MsoNormal" style="line-height:normal;text-align:justify;margin:0;">return intNumber;</p>
<p class="MsoNormal" style="line-height:normal;text-align:justify;margin:0;">}</p>
<p class="MsoNormal" style="line-height:normal;text-align:justify;margin:0;">}</p>
<p></span></span></td>
</tr>
</tbody>
</table>
<p> </p>
<p class="MsoNormal" style="text-align:justify;margin:0 0 10pt;"> </p>
<p>bunun böyle çalışabilme kabileyeti varmış.. fakat ben <span style="color:#ff6666;">doInBackground()</span> metodunu kullandığımda ise, Eclipse bana return type&#8217;ının sadece <span style="color:#ff6666;">Object</span> olabileceğini söylüyor. Bu durumda el mahkum olarak, return type&#8217;ı Object yapıyoruz ve göndereceğimiz veriyi de <span style="color:#ff6666;">String</span> <span style="color:#ff6666;">retStr = String.valueOf(intNumber);</span> komutu ile String&#8217;e çevirip <span style="color:#ff6666;">return retStr;</span> diyerek return değerimizi gönderiyoruz.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Background execution of long running operations]]></title>
<link>http://danielrohe.wordpress.com/2008/05/07/background-execution-of-long-running-operations/</link>
<pubDate>Wed, 07 May 2008 01:02:25 +0000</pubDate>
<dc:creator>danielrohe</dc:creator>
<guid>http://danielrohe.wordpress.com/2008/05/07/background-execution-of-long-running-operations/</guid>
<description><![CDATA[After showing some problems with the synchronous solutions like Foxtrot or Spin. Now I want to talk ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>After showing some problems with the synchronous solutions like Foxtrot or Spin. Now I want to talk about Swing Application Framework&#8217;s TaskService or a small own solution.</p>
<p>The Swing Application Framework uses annotated methods which can be executed as during the <em>actionPerformed()</em> method of an Action. The method can return a task to indicate that it needs to be executed in the background. This Task object is handed over to the TaskService which executes it in a background thread, like a SwingWorker. The Task object might have a blocking scope that defines how much of the user interface is blocked during execution. This is quite easy and works very well.</p>
<p>My problem is the Task class which not only contains information about how to block, but also the responsibility to create the blocker and a reference to the task service. If there are multiple tasks it might be possible that two blockers show a dialog <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' />  . I would like to have a Task which is small and easy, like a command object from the command pattern. The command or task should then be handed over to the so called TaskService and this one should execute it.</p>
<p>First the Task needs to be simplified. Therefore the responsibility of creating and maintaining the InputBlocker moves over to the TaskService. The service has a single input blocker which is used in the complete application. So it has a unique interface and can also show a list of running tasks like the ProgressView of Eclipse. The service also should implement the Executor interface which makes it possible that even Runnable objects can be executed over this service. The service distinguishes between a Runnable object and a Task and can use a default blocking behavior like blocking the complete application. If the TaskService extends ThreadPoolExecutor it is easy to implement input blocking by blocking either in <em>execute()</em> or <em>beforeExecute()</em> and unblocking in <em>afterExecute()</em>.</p>
<p>The Task class is then a simple extension of SwingWorker with some visual attributes like title and description, running time. An important BlockingScope that defines how much is blocked and an optional source from which the input blocker is able to block the user interface.</p>
<p><a href="http://danielrohe.files.wordpress.com/2008/05/background-execution.jpg"><img class="alignnone size-medium wp-image-114" src="http://danielrohe.wordpress.com/files/2008/05/background-execution.jpg?w=300" alt="Background Execution" width="300" height="220" /></a></p>
<p>The image shows possible classes for the simplified service. I renamed the Task to SwingWorkerExt because it is a simple extension of SwingWorker. The enumeration BlockingScope and the interface InputBlocker stays as in the SwingApplicationFramework. But instead of having an association between InputBlocker and SwingWorkerExt, the input blocker only works together with the executor. In this case the SwingThreadPoolExecutor is the service used to execute background operations. introducing events when a command is added, removed, executed or rejected also helps the application to better react in extrem conditions.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[SwingWorker not on Java 6.0]]></title>
<link>http://wsjoung.wordpress.com/2008/04/24/swingworker-not-on-java-60/</link>
<pubDate>Thu, 24 Apr 2008 14:15:08 +0000</pubDate>
<dc:creator>wsjoung</dc:creator>
<guid>http://wsjoung.wordpress.com/2008/04/24/swingworker-not-on-java-60/</guid>
<description><![CDATA[SwingWorker is useful when a time-consuming task has to be performed following a user-interaction ev]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>SwingWorker is useful when a time-consuming task has to be performed following a user-interaction event (for example, parsing a huge XML File, on pressing a Button). The most straightforward way to do it is :</p>
<pre class="brush: java;">
 private Document doc;
 ...
 JButton button = new JButton(&quot;Open XML&quot;);
 button.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
       doc = loadXML();
    }
 });
</pre>
<p>This will work, but unfortunately, the loadXML() method will be called in the same thread as the main Swing thread, so if the method needs time to perform, the GUI will freeze during this time.</p>
<pre class="brush: java;">
package com.wsjoung.demo;
import javax.swing.SwingUtilities;

public abstract class SwingWorker {
    // see getValue(), setValue()
    private Object value;
    private Thread thread;

    private static class ThreadVar {
        private Thread thread;
        ThreadVar(Thread t) { thread = t; }
        synchronized Thread get() { return thread; }
        synchronized void clear() { thread = null; }
    }

    private ThreadVar threadVar;

    protected synchronized Object getValue() {
        return value;
    }

    private synchronized void setValue(Object x) {
        value = x;
    }

    public abstract Object construct();

    public void finished() {
    }

    public void interrupt() {
        Thread t = threadVar.get();
        if (t != null) {
            t.interrupt();
        }
        threadVar.clear();
    }

    public Object get() {
        while (true) {
            Thread t = threadVar.get();
            if (t == null) {
                return getValue();
            }
            try {
                t.join();
            }
            catch (InterruptedException e) {
                // propagate
                Thread.currentThread().interrupt();
                return null;
            }
        }
    }

    public SwingWorker() {
        final Runnable doFinished = new Runnable() {
           public void run() { finished(); }
        };

        Runnable doConstruct = new Runnable() {
            public void run() {
                try {
                    setValue(construct());
                }
                finally {
                    threadVar.clear();
                }

              SwingUtilities.invokeLater(doFinished);
            }
        };

        Thread t = new Thread(doConstruct);
        threadVar = new ThreadVar(t);
        t.start();
    }
}
</pre>
<p><a href="http://java.sun.com/products/jfc/tsc/articles/threads/src/SwingWorker.java">SwingWorker.java</a></p>
<pre class="brush: java;">
public class Task{
  public void go() {
      current = 0;
      final SwingWorker worker = new SwingWorker() {
          public Object construct() {
              return new ActualTask();
          }
      };
  }

  class ActualTask {
      ActualTask() {
          try {
              Thread.sleep(1000);
          } catch (InterruptedException e) {}
      }
  }
}
</pre>
<p>Task.java</p>
</div>]]></content:encoded>
</item>

</channel>
</rss>
