<?xml version="1.0" encoding="UTF-8"?>
<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/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Software Passion &#187; Learning Materials</title>
	<atom:link href="http://www.softwarepassion.com/category/learning_materials/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.softwarepassion.com</link>
	<description>by Krzysztof Grajek</description>
	<lastBuildDate>Thu, 18 Mar 2010 17:46:25 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Add &#8216;count #&#8217; column to JTable</title>
		<link>http://www.softwarepassion.com/add-count-column-to-jtable/</link>
		<comments>http://www.softwarepassion.com/add-count-column-to-jtable/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 14:18:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Code Snippets]]></category>
		<category><![CDATA[General Programming]]></category>
		<category><![CDATA[Graphics And Design]]></category>
		<category><![CDATA[Learning Materials]]></category>
		<category><![CDATA[count column]]></category>
		<category><![CDATA[jxtable]]></category>

		<guid isPermaLink="false">http://www.softwarepassion.com/?p=336</guid>
		<description><![CDATA[<span style="max-width: 100px; display: block; float: left;"><img src="http://softwarepassion.s3.amazonaws.com/wp-content/uploads/count_jtable_column-300x179.png" alt="jtable count column" title="jtable # column" width="100" height="100"/></span><span style="margin: 0px; padding-left: 10px; display: block; max-width: 370px; float: left;">How to add 'count#' column in JTable</span>]]></description>
			<content:encoded><![CDATA[<p>Important note first: This is mostly not my code, I was strugling with this problem for some time, I couldn&#8217;t google it at all, and one day, I&#8217;ve just found it. Now I use it in one of my projects but I cannot find the original post again, therefore I have decided to post it on my blog (slightly modified version of the original) so other people with similar problem will have a better chance of finding the solution.<br />
So, the idea is very simple. The whole point of displaying additional column which is kind of independent from the other columns is to simply use another table. This way you can sort one table by column and the number column will not sort with it. &#8211; thats exactly what I was looking for and I guess its kind of popular problem.<br />
Becouse you put two tables in one scroll pane the gui looks like its just one column!<br />
<script type="text/javascript"><!--
google_ad_client = "pub-3015706834207881";
/* 468x15, utworzono 09-11-19 */
google_ad_slot = "3912330401";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
I have created one simple method to apply this technique to any tables in my application (I use JXTable actually but JTable will do as well)</p>
<div class="codecolorer-container java " style="overflow:auto;white-space:nowrap;width:535px"><div class="java codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw1">private</span> <span class="kw4">void</span> addLPColumn<span class="br0">&#40;</span>JXTable table, <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ajscrollpane+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">JScrollPane</span></a> scp<span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ajtable+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">JTable</span></a> rowTable <span class="sy0">=</span> <span class="kw1">new</span> RowNumberTable<span class="br0">&#40;</span>table<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; scp.<span class="me1">setRowHeaderView</span><span class="br0">&#40;</span>rowTable<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; scp.<span class="me1">setCorner</span><span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ajscrollpane+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">JScrollPane</span></a>.<span class="me1">UPPER_LEFT_CORNER</span>, rowTable.<span class="me1">getTableHeader</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; scp.<span class="me1">repaint</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span></div></div>
<p><script type="text/javascript"><!--
google_ad_client = "pub-3015706834207881";
/* 468x15, utworzono 09-11-19 */
google_ad_slot = "3912330401";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<p>RowNumberTable is simple one column table displaying the &#8216;count&#8217; number of rows in the second table. </p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-3015706834207881";
/* 468x15, utworzono 09-11-19 */
google_ad_slot = "3912330401";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<div class="codecolorer-container java " style="overflow:auto;white-space:nowrap;width:535px;height:300px"><div class="java codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw1">public</span> <span class="kw1">class</span> RowNumberTable <span class="kw1">extends</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ajtable+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">JTable</span></a><br />
&nbsp; &nbsp; <span class="kw1">implements</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Achangelistener+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">ChangeListener</span></a>, <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Apropertychangelistener+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">PropertyChangeListener</span></a><br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">private</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ajtable+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">JTable</span></a> main<span class="sy0">;</span><br />
<br />
&nbsp; &nbsp; <span class="kw1">public</span> RowNumberTable<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ajtable+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">JTable</span></a> table<span class="br0">&#41;</span><br />
&nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; main <span class="sy0">=</span> table<span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; main.<span class="me1">addPropertyChangeListener</span><span class="br0">&#40;</span> <span class="kw1">this</span> <span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; setFocusable<span class="br0">&#40;</span> <span class="kw2">false</span> <span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; setAutoCreateColumnsFromModel<span class="br0">&#40;</span> <span class="kw2">false</span> <span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; setModel<span class="br0">&#40;</span> main.<span class="me1">getModel</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; setSelectionModel<span class="br0">&#40;</span> main.<span class="me1">getSelectionModel</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Atablecolumn+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">TableColumn</span></a> column <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Atablecolumn+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">TableColumn</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; column.<span class="me1">setHeaderValue</span><span class="br0">&#40;</span><span class="st0">&quot;Lp.&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; addColumn<span class="br0">&#40;</span> column <span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; column.<span class="me1">setCellRenderer</span><span class="br0">&#40;</span><span class="kw1">new</span> RowNumberRenderer<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; getColumnModel<span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">getColumn</span><span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span>.<span class="me1">setPreferredWidth</span><span class="br0">&#40;</span><span class="nu0">40</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; setPreferredScrollableViewportSize<span class="br0">&#40;</span>getPreferredSize<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
<br />
&nbsp; &nbsp; @Override<br />
&nbsp; &nbsp; <span class="kw1">public</span> <span class="kw4">void</span> addNotify<span class="br0">&#40;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">super</span>.<span class="me1">addNotify</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Acomponent+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Component</span></a> c <span class="sy0">=</span> getParent<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// &nbsp;Keep scrolling of the row table in sync with the main table.</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>c <span class="kw1">instanceof</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ajviewport+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">JViewport</span></a><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ajviewport+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">JViewport</span></a> viewport <span class="sy0">=</span> <span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ajviewport+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">JViewport</span></a><span class="br0">&#41;</span>c<span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; viewport.<span class="me1">addChangeListener</span><span class="br0">&#40;</span> <span class="kw1">this</span> <span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
<br />
&nbsp; &nbsp; <span class="coMULTI">/*<br />
&nbsp; &nbsp; &nbsp;* &nbsp;Delegate method to main table<br />
&nbsp; &nbsp; &nbsp;*/</span><br />
&nbsp; &nbsp; @Override<br />
&nbsp; &nbsp; <span class="kw1">public</span> <span class="kw4">int</span> getRowCount<span class="br0">&#40;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>main <span class="sy0">!=</span> <span class="kw2">null</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> main.<span class="me1">getRowCount</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="nu0">0</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
<br />
&nbsp; &nbsp; @Override<br />
&nbsp; &nbsp; <span class="kw1">public</span> <span class="kw4">int</span> getRowHeight<span class="br0">&#40;</span><span class="kw4">int</span> row<span class="br0">&#41;</span><br />
&nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> main.<span class="me1">getRowHeight</span><span class="br0">&#40;</span>row<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
<br />
&nbsp; &nbsp; <span class="coMULTI">/*<br />
&nbsp; &nbsp; &nbsp;* &nbsp;This table does not use any data from the main TableModel,<br />
&nbsp; &nbsp; &nbsp;* &nbsp;so just return a value based on the row parameter.<br />
&nbsp; &nbsp; &nbsp;*/</span><br />
&nbsp; &nbsp; @Override<br />
&nbsp; &nbsp; <span class="kw1">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aobject+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Object</span></a> getValueAt<span class="br0">&#40;</span><span class="kw4">int</span> row, <span class="kw4">int</span> column<span class="br0">&#41;</span><br />
&nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ainteger+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Integer</span></a>.<span class="me1">toString</span><span class="br0">&#40;</span>row <span class="sy0">+</span> <span class="nu0">1</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
<br />
&nbsp; &nbsp; <span class="coMULTI">/*<br />
&nbsp; &nbsp; &nbsp;* &nbsp;Don't edit data in the main TableModel by mistake<br />
&nbsp; &nbsp; &nbsp;*/</span><br />
&nbsp; &nbsp; @Override<br />
&nbsp; &nbsp; <span class="kw1">public</span> <span class="kw4">boolean</span> isCellEditable<span class="br0">&#40;</span><span class="kw4">int</span> row, <span class="kw4">int</span> column<span class="br0">&#41;</span><br />
&nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="kw2">false</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
<span class="co1">//</span><br />
<span class="co1">// &nbsp;Implement the ChangeListener</span><br />
<span class="co1">//</span><br />
&nbsp; &nbsp; <span class="kw1">public</span> <span class="kw4">void</span> stateChanged<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Achangeevent+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">ChangeEvent</span></a> e<span class="br0">&#41;</span><br />
&nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// &nbsp;Keep the scrolling of the row table in sync with main table</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ajviewport+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">JViewport</span></a> viewport <span class="sy0">=</span> <span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ajviewport+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">JViewport</span></a><span class="br0">&#41;</span> e.<span class="me1">getSource</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ajscrollpane+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">JScrollPane</span></a> scrollPane <span class="sy0">=</span> <span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ajscrollpane+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">JScrollPane</span></a><span class="br0">&#41;</span>viewport.<span class="me1">getParent</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; scrollPane.<span class="me1">getVerticalScrollBar</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">setValue</span><span class="br0">&#40;</span>viewport.<span class="me1">getViewPosition</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">y</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
<span class="co1">//</span><br />
<span class="co1">// &nbsp;Implement the PropertyChangeListener</span><br />
<span class="co1">//</span><br />
&nbsp; &nbsp; <span class="kw1">public</span> <span class="kw4">void</span> propertyChange<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Apropertychangeevent+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">PropertyChangeEvent</span></a> e<span class="br0">&#41;</span><br />
&nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// &nbsp;Keep the row table in sync with the main table</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="st0">&quot;selectionModel&quot;</span>.<span class="me1">equals</span><span class="br0">&#40;</span>e.<span class="me1">getPropertyName</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setSelectionModel<span class="br0">&#40;</span> main.<span class="me1">getSelectionModel</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="st0">&quot;model&quot;</span>.<span class="me1">equals</span><span class="br0">&#40;</span>e.<span class="me1">getPropertyName</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setModel<span class="br0">&#40;</span> main.<span class="me1">getModel</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
<br />
&nbsp; &nbsp; <span class="coMULTI">/*<br />
&nbsp; &nbsp; &nbsp;* &nbsp;Borrow the renderer from JDK1.4.2 table header<br />
&nbsp; &nbsp; &nbsp;*/</span><br />
&nbsp; &nbsp; <span class="kw1">private</span> <span class="kw1">static</span> <span class="kw1">class</span> RowNumberRenderer <span class="kw1">extends</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Adefaulttablecellrenderer+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">DefaultTableCellRenderer</span></a><br />
&nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> RowNumberRenderer<span class="br0">&#40;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setHorizontalAlignment<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ajlabel+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">JLabel</span></a>.<span class="me1">CENTER</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Acomponent+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Component</span></a> getTableCellRendererComponent<span class="br0">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ajtable+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">JTable</span></a> table, <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aobject+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Object</span></a> value, <span class="kw4">boolean</span> isSelected, <span class="kw4">boolean</span> hasFocus, <span class="kw4">int</span> row, <span class="kw4">int</span> column<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>table <span class="sy0">!=</span> <span class="kw2">null</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ajtableheader+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">JTableHeader</span></a> header <span class="sy0">=</span> table.<span class="me1">getTableHeader</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>header <span class="sy0">!=</span> <span class="kw2">null</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setForeground<span class="br0">&#40;</span>header.<span class="me1">getForeground</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setBackground<span class="br0">&#40;</span>header.<span class="me1">getBackground</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setFont<span class="br0">&#40;</span>header.<span class="me1">getFont</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>isSelected<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setFont<span class="br0">&#40;</span> getFont<span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">deriveFont</span><span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afont+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Font</span></a>.<span class="me1">BOLD</span><span class="br0">&#41;</span> <span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setText<span class="br0">&#40;</span><span class="br0">&#40;</span>value <span class="sy0">==</span> <span class="kw2">null</span><span class="br0">&#41;</span> <span class="sy0">?</span> <span class="st0">&quot;&quot;</span> <span class="sy0">:</span> value.<span class="me1">toString</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setBorder<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Auimanager+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">UIManager</span></a>.<span class="me1">getBorder</span><span class="br0">&#40;</span><span class="st0">&quot;TableHeader.cellBorder&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="kw1">this</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
<span class="br0">&#125;</span></div></div>
<p><a href="http://softwarepassion.s3.amazonaws.com/wp-content/uploads/count_jtable_column.png" rel="lightbox[336]"><img src="http://softwarepassion.s3.amazonaws.com/wp-content/uploads/count_jtable_column-300x179.png" alt="count_jtable_column" title="count_jtable_column" width="300" height="179" class="aligncenter size-medium wp-image-337" /></a></p>
<p>In my case the &#8216;count&#8217; column is called &#8216;Lp.&#8217; &#8211; in polish </p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-3015706834207881";
/* 468x15, utworzono 09-11-19 */
google_ad_slot = "3912330401";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
I have created one simple method to apply this technique to any tables in my application (I use JXTable actually but JTable will do as well)</p>
<div class="codecolorer-container java " style="overflow:auto;white-space:nowrap;width:535px"><div class="java codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw1">private</span> <span class="kw4">void</span> addLPColumn<span class="br0">&#40;</span>JXTable table, <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ajscrollpane+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">JScrollPane</span></a> scp<span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ajtable+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">JTable</span></a> rowTable <span class="sy0">=</span> <span class="kw1">new</span> RowNumberTable<span class="br0">&#40;</span>table<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; scp.<span class="me1">setRowHeaderView</span><span class="br0">&#40;</span>rowTable<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; scp.<span class="me1">setCorner</span><span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ajscrollpane+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">JScrollPane</span></a>.<span class="me1">UPPER_LEFT_CORNER</span>, rowTable.<span class="me1">getTableHeader</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; scp.<span class="me1">repaint</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span></div></div>
<p><script type="text/javascript"><!--
google_ad_client = "pub-3015706834207881";
/* 468x15, utworzono 09-11-19 */
google_ad_slot = "3912330401";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.softwarepassion.com/add-count-column-to-jtable/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Emergent Design: The Evolutionary Nature of Professional Software Development</title>
		<link>http://www.softwarepassion.com/emergent-design-the-evolutionary-nature-of-professional-software-development/</link>
		<comments>http://www.softwarepassion.com/emergent-design-the-evolutionary-nature-of-professional-software-development/#comments</comments>
		<pubDate>Thu, 04 Sep 2008 12:19:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Learning Materials]]></category>

		<guid isPermaLink="false">http://softwarepassion.com/?p=34</guid>
		<description><![CDATA[Well, I have just read another comment left on my blog and I had realized, well, I had realized that I have a blog  . Completly forgot about its existence, and since last post I was writing as a student at University of Greenwich, London, now I&#8217;m writing as an owner of a really [...]]]></description>
			<content:encoded><![CDATA[<p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_SjX7MIMF_HI/SL_Umfl5STI/AAAAAAAAALw/G8FHjOKqJBU/s1600-h/410rsT5XQmL._SL500_AA240_.jpg" rel="lightbox[34]"><img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_SjX7MIMF_HI/SL_Umfl5STI/AAAAAAAAALw/G8FHjOKqJBU/s320/410rsT5XQmL._SL500_AA240_.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5242142249063106866" /></a><br />Well, I have just read another comment left on my blog and I had realized, well, I had realized that I have a blog <img src='http://www.softwarepassion.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Completly forgot about its existence, and since last post I was writing as a student at University of Greenwich, London, now I&#8217;m writing as an owner of a really small startup software company in Elblag, Poland <img src='http://www.softwarepassion.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> , things change quickly.</p>
<p>Anyway, student or not, I still read a lot, maybe not that much as I used to do but stil quite a lot. I have decided to write a short note on the latest book I read as I&#8217;ve found it really interesting.</p>
<p>The title you know already, this book is not about programming but about more general concepts, about programming as a profession. It&#8217;s a nice book about software design and life as a software developer. Once you become proficient in any programming language and you start being interested in methodologies, patterns etc you should read this book!<br />Highly recommended!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.softwarepassion.com/emergent-design-the-evolutionary-nature-of-professional-software-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Head First Software Development completed!</title>
		<link>http://www.softwarepassion.com/head-first-software-development-completed/</link>
		<comments>http://www.softwarepassion.com/head-first-software-development-completed/#comments</comments>
		<pubDate>Sat, 01 Mar 2008 21:00:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Learning Materials]]></category>

		<guid isPermaLink="false">http://softwarepassion.com/?p=28</guid>
		<description><![CDATA[Another example of the book proving that software books can be fun! Head First series books are usualy easy to read and thats what makes them most valuable for me. I have read a few of them, since I started learning how to program, and I was never disappointed, I think I have read HF [...]]]></description>
			<content:encoded><![CDATA[<p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_SjX7MIMF_HI/R8nKLPGXcKI/AAAAAAAAAKA/ir7vGfmWiLc/s1600-h/hfsd.gif" rel="lightbox[28]"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp2.blogger.com/_SjX7MIMF_HI/R8nKLPGXcKI/AAAAAAAAAKA/ir7vGfmWiLc/s400/hfsd.gif" alt="" id="BLOGGER_PHOTO_ID_5172887941392330914" border="0" /></a>Another example of the book proving that software books can be fun! Head First series books are usualy easy to read and thats what makes them most valuable for me. I have read a few of them, since I started learning how to program, and I was never disappointed, I think I have read HF Servlets and JSP about 3 times <img src='http://www.softwarepassion.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  and I know that if I start a project with Servlets or JSPs I will read a few bits again <img src='http://www.softwarepassion.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .<br />HF Software Development is of course no exception. This book on my bookshelf is a result of my new subscription to Safari, I should actualy say it&#8217;s on my virtual bookshelf <img src='http://www.softwarepassion.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .<br />I belive there are experienced software developers which will find this book boring or maybe not bringing anything new to their &#8216;toolbox&#8217;.<br />For me this book is superb! In my opinion every CS student should read it before going into the wild and look for a job.<br />This is in short what you can get:
<ul>
<li>A feel of profesional software development process</li>
<p>
<li>Reason for manager&#8217;s daily headache <img src='http://www.softwarepassion.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<p>
<li>What is TDD and how it works</li>
<p>
<li>What is Continous Integration</li>
<p>
<li>How tos: gathering requirements, desing and implement </li>
<p>
<li>A few bits on proper design, UML and refactoring</li>
<p>
<li>Many others which I either considered common knowledge or haven&#8217;t notice <img src='http://www.softwarepassion.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </li>
<p></ul>
<p>Go to Safari books online or Amazon for detailed table of contents.<br />I would give it 5/5 mark.<br />Highly recommended</p>
]]></content:encoded>
			<wfw:commentRss>http://www.softwarepassion.com/head-first-software-development-completed/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mythical Man Month On My Bookshelf</title>
		<link>http://www.softwarepassion.com/mythical-man-month-on-my-bookshelf/</link>
		<comments>http://www.softwarepassion.com/mythical-man-month-on-my-bookshelf/#comments</comments>
		<pubDate>Sun, 27 Jan 2008 05:43:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Learning Materials]]></category>

		<guid isPermaLink="false">http://softwarepassion.com/?p=25</guid>
		<description><![CDATA[I was reading so often about this one on the net and in other books that it was on top of my reading list quite a long time. I had no idea what to expect from this book and I haven&#8217;t found there anything what recently I like the most, like tips on software development, [...]]]></description>
			<content:encoded><![CDATA[<p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_SjX7MIMF_HI/R5wePgcuK0I/AAAAAAAAAJY/fJ9xk5-jk-U/s1600-h/mythical_man_month.jpg" rel="lightbox[25]"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp2.blogger.com/_SjX7MIMF_HI/R5wePgcuK0I/AAAAAAAAAJY/fJ9xk5-jk-U/s400/mythical_man_month.jpg" alt="" id="BLOGGER_PHOTO_ID_5160032524817017666" border="0" /></a><br />I was reading so often about this one on the net and in other books that it was on top of my reading list quite a long time. I had no idea what to expect from this book and I haven&#8217;t found there anything what recently I like the most, like tips on software development, refactorings to patterns or code tunning. Well it&#8217;s non of those things but of course it&#8217;s not the author&#8217;s fault. Definietly I should do some more research before buying this one, as I think this book is not for startups in software industry like me. I belive, people who manage projects and people resources enjoy reading this book much more than those who write software only.<br />I cannot say I didn&#8217;t like it though, overall is always nice to read about such a huge project like soft for IBM mainframe.<br />Maybe not really what I&#8217;m looking for these days but definietly valuable read!<br />Recommended!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.softwarepassion.com/mythical-man-month-on-my-bookshelf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Code Complete on my bookshelf</title>
		<link>http://www.softwarepassion.com/code-complete-on-my-bookshelf/</link>
		<comments>http://www.softwarepassion.com/code-complete-on-my-bookshelf/#comments</comments>
		<pubDate>Thu, 10 Jan 2008 10:55:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Learning Materials]]></category>

		<guid isPermaLink="false">http://softwarepassion.com/?p=23</guid>
		<description><![CDATA[Another Amazon&#8217;s 5 star rating book on my bookshelf. I have just finished this huge, over 800 pages, heavy as hell book. Well, in my opinion, it could be less than 300 or maybe even 200 pages, as most of it is so obvious that I just couldn&#8217;t belive someone has written book about it, [...]]]></description>
			<content:encoded><![CDATA[<p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_SjX7MIMF_HI/R4X_RyIttbI/AAAAAAAAAIw/kxn1t-_tbz4/s1600-h/cc.jpg" rel="lightbox[23]"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp3.blogger.com/_SjX7MIMF_HI/R4X_RyIttbI/AAAAAAAAAIw/kxn1t-_tbz4/s400/cc.jpg" alt="" id="BLOGGER_PHOTO_ID_5153806029576582578" border="0" /></a><br />Another Amazon&#8217;s 5 star rating book on my bookshelf. I have just finished this huge, over 800 pages, heavy as hell book. Well, in my opinion, it could be less than 300 or maybe even 200 pages, as most of it is so obvious that I just couldn&#8217;t belive someone has written book about it, hmmnn, maybe I&#8217;m wrong and maybe lots of people find it usefull, but still for me just 3 stars <img src='http://www.softwarepassion.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .<br />What I have gained from reading this book? For sure I have stronger muscles on my back as I did carry it on the tube almost everyday <img src='http://www.softwarepassion.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> , but beside that this book is of course not that bad and at the end of the day I would say it was a valuable read. I have enjoyed especially the chapter about code improvemens like refactorings and tuning and that is less than 150 pages! The rest, well, I think it&#8217;s good to brush up on some things a bit but if you have written a program with, lets say, at least 500 lines of code you are completly aware what correct intedation, comments, naming variables etc means not only for other people reading your code but especially to you!<br />One very good thing about this book is the fact that the author included tonnes of references to other books and research papers &#8211; heh, reading will never stop!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.softwarepassion.com/code-complete-on-my-bookshelf/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Kris on Joel</title>
		<link>http://www.softwarepassion.com/kris-on-joel/</link>
		<comments>http://www.softwarepassion.com/kris-on-joel/#comments</comments>
		<pubDate>Mon, 10 Dec 2007 10:36:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Learning Materials]]></category>

		<guid isPermaLink="false">http://softwarepassion.com/?p=20</guid>
		<description><![CDATA[Another fantastic? book on my bookshelf &#8211; &#8220;Joel on Software: And on Diverse and Occasionally Related Matters That Will Prove of Interest to Software Developers, Designers, and Managers, and to Those Who, Whether by Good Fortune or Ill Luck, Work with Them in Some Capacity&#8221; by J.Sposlky. Well, I&#8217;m still not sure why this book [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-size:100%;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_SjX7MIMF_HI/R10hMxTwcMI/AAAAAAAAAII/Zkj66kL8fpA/s1600-h/51H5V6VF7ZL._AA240_.jpg" rel="lightbox[20]"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp2.blogger.com/_SjX7MIMF_HI/R10hMxTwcMI/AAAAAAAAAII/Zkj66kL8fpA/s400/51H5V6VF7ZL._AA240_.jpg" alt="" id="BLOGGER_PHOTO_ID_5142302852805324994" border="0" /></a><br /></span><span style="color: rgb(0, 0, 0);font-size:100%;" ><span style="font-family:arial;">Another fantastic? book on my bookshelf &#8211; &#8220;<span style="font-style: italic;">Joel on Software: And on Diverse and Occasionally Related Matters That Will Prove of Interest to Software Developers, Designers, and Managers, and to Those Who, Whether by Good Fortune or Ill Luck, Work with Them in Some Capacity</span>&#8221; by J.Sposlky. Well, I&#8217;m still not sure why this book gets so high marks on amazon web site but I&#8217;m sure of one thing about it &#8211; this book is fun. I did enjoy reading it although some bits were really pis..ng me off (like calling all people who work in McDonald&#8217;s &#8216;morons&#8217;) . Some people say don&#8217;t buy it &#8211; you can read it free on the web, but I definietly prefer printed version.<br />It is difficult to find anything bad said about Microsoft in this book and some articles touching Unix/Linux world seem to be unfair or mostly outdated but it is still nice to read Joel&#8217;s opinions even if we don&#8217;t agree with them every time.<br />This guy for sure has a lots of experience and for the beginner like me it&#8217;s nice to read through someone else IT career.<br />Again HR (Highly Recommended) <img src='http://www.softwarepassion.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> <br /></span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.softwarepassion.com/kris-on-joel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Bookshelf!</title>
		<link>http://www.softwarepassion.com/my-bookshelf/</link>
		<comments>http://www.softwarepassion.com/my-bookshelf/#comments</comments>
		<pubDate>Sat, 01 Dec 2007 14:29:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Learning Materials]]></category>

		<guid isPermaLink="false">http://softwarepassion.com/?p=18</guid>
		<description><![CDATA[    Starting from now on I have decided to add to my blog entries of the books read by me recently.
    First one is probably the thinnest and nicest to read ever. If you are interested in developing your programming skills beyond java, how things are in your neighbourhood, [...]]]></description>
			<content:encoded><![CDATA[<p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_SjX7MIMF_HI/R1FxtxTwcKI/AAAAAAAAAH4/riOyyHAnq2E/s1600-R/517Ej-WTPjL._SS500_.jpg" rel="lightbox[18]"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_SjX7MIMF_HI/R1FxtxTwcKI/AAAAAAAAAH4/joruN87zdUs/s400/517Ej-WTPjL._SS500_.jpg" alt="" id="BLOGGER_PHOTO_ID_5139013680950702242" border="0" /></a>    Starting from now on I have decided to add to my blog entries of the books read by me recently.
<div style="text-align: left;">    First one is probably the thinnest and nicest to read ever. If you are interested in developing your programming skills beyond java, how things are in your neighbourhood, go ahead and read &#8216;Beyond Java&#8217; by Bruce A. Tate.<br />I found this book really interesting. It moved in me some old, not touched for a long time cogs, the machine which pushed me into software development, need of discovering new things. I have realized that I need to improve not only for a bit better CV but mainly for fun, for those things all of us do programming.<br />  It&#8217;s a must read for all java developers.</div>
]]></content:encoded>
			<wfw:commentRss>http://www.softwarepassion.com/my-bookshelf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Perfect book for a desert island!</title>
		<link>http://www.softwarepassion.com/a-perfect-book-for-a-desert-island/</link>
		<comments>http://www.softwarepassion.com/a-perfect-book-for-a-desert-island/#comments</comments>
		<pubDate>Sat, 18 Aug 2007 06:20:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Learning Materials]]></category>

		<guid isPermaLink="false">http://softwarepassion.com/?p=12</guid>
		<description><![CDATA[Although not very popular on my university, and actually, I would say the book which puts myself off reading as it&#8217;s very difficult I think I have found a perfect book for the desert island. Of course this book must be about programming and must last for many years to read. I&#8217;m telling you all [...]]]></description>
			<content:encoded><![CDATA[<p>Although not very popular on my university, and actually, I would say the book which puts myself off reading as it&#8217;s very difficult I think I have found a perfect book for the desert island. Of course this book must be about programming and must last for many years to read. I&#8217;m telling you all guys, I have found one, actually many but like one &#8211; <span style="font-weight: bold;">&#8220;The Art of Computer Programming&#8221; by Donald E. Knuth</span>.<br /> Now instead of intellectual chess evening I will probably dive into it as complicated things sometimes fascinate me.</p>
<p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_SjX7MIMF_HI/RsaT2sHO1_I/AAAAAAAAADM/hsY3-pTtMqs/s1600-h/51HG98TSSQL._AA240_.jpg" rel="lightbox[12]"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_SjX7MIMF_HI/RsaT2sHO1_I/AAAAAAAAADM/hsY3-pTtMqs/s320/51HG98TSSQL._AA240_.jpg" alt="" id="BLOGGER_PHOTO_ID_5099926195807377394" border="0" /></a></p>
<p> Hey people, if you know any book similar to that one, or at least the one you believe is perfect for the one way trip, you can read it for a very long time and it&#8217;s about programming, please let me know. If I will gather enough posts I will create top 10 programming books for the desert island and post it on my blog! Thanks in advance!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.softwarepassion.com/a-perfect-book-for-a-desert-island/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
