<?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>David Qiao&#039;s Blog &#187; Java and Swing</title>
	<atom:link href="http://www.jidesoft.com/blog/category/technology/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jidesoft.com/blog</link>
	<description>Love being a Swing developer</description>
	<lastBuildDate>Wed, 18 Jan 2012 21:00:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>A great enhancement to the CellStyle feature in JIDE Grids</title>
		<link>http://www.jidesoft.com/blog/2012/01/17/152/</link>
		<comments>http://www.jidesoft.com/blog/2012/01/17/152/#comments</comments>
		<pubDate>Tue, 17 Jan 2012 06:55:32 +0000</pubDate>
		<dc:creator>David Qiao</dc:creator>
				<category><![CDATA[Java and Swing]]></category>
		<category><![CDATA[JIDE]]></category>
		<category><![CDATA[cellstyle]]></category>
		<category><![CDATA[jtable]]></category>

		<guid isPermaLink="false">http://www.jidesoft.com/blog/?p=152</guid>
		<description><![CDATA[A plain JTable is boring. People usually want to add some styles such as different colors, different fonts, nice little decorations to the JTable cells to make the table more interesting. Before using JIDE Grids, the only way to add styles is to use customized TableCellRenderers. For each unique style, create a TableCellRenderer and associate [...]]]></description>
			<content:encoded><![CDATA[<p>A plain JTable is boring. People usually want to add some styles such as different colors, different fonts, nice little decorations to the JTable cells to make the table more interesting. Before using JIDE Grids, the only way to add styles is to use customized TableCellRenderers. For each unique style, create a TableCellRenderer and associate it with the table cells either by either mapping it to a data type or override JTable&#8217;s getCellRenderer  method. For a table with a lot of unique styles, you will end up with a lot of customized cell renderers which is clearly not fun at all.</p>
<p>The CellStyle feature in JIDE Grids provides a hook into the cell renderer creation process. You use CellStyle to pass in some predefined styles, such as font, font style, background, foreground, border, alignments. If you are using a CellStyleTable or one of its subclasses, those styles will be applied to the renderer component before it is used to paint the cell. The DefaultTableCellRenderer is a JLabel. As long as you are okay to use JLabel to renderer the cell, the cell styles feature would work so that you don&#8217;t have to introduce customized cell renderers.</p>
<p>There are cases that JLabel can&#8217;t handle the painting of the cells. For example, a cell that renders a five-star rating. Clearly JLabel can&#8217;t handle it. And it sounds like for sure that you will have to create a customized renderer based on a five-star rating component. But we have another way to do it. Always keep in mind, JTable uses the renderer component to paint the cell. If we can find a way to use our own code to do the painting, we may not need a new cell renderer after all. That&#8217;s why we decide to bring the CellStyle feature to the next level by introducing CellPainter.</p>
<p>CellPainter is a simple interface like this.</p>
<div class="codecolorer-container java default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">interface</span> CellPainter <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">void</span> paint<span style="color: #009900;">&#40;</span><span style="color: #003399;">Graphics</span> g, <span style="color: #003399;">Component</span> component, <span style="color: #000066; font-weight: bold;">int</span> row, <span style="color: #000066; font-weight: bold;">int</span> column, <span style="color: #003399;">Rectangle</span> cellRect, <span style="color: #003399;">Object</span> value<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span></div></div>
<p>We introduced two types of CellPainters to the CellStyleTable. One is the OverlayCellPainter, the other is the UnderlayCellPainter. We paint the cell in three steps. First, the lower layer, which is painted before the cell content, paints using the underlay CellPainter specified in the CellStyle. The second step is the to paint the cell content using the renderer component, as the table does right now. The last step is to paint using the overlay CellPainter after the cell content is painted. By leveraging this three-step painting, we make a lot of features possible.</p>
<p>The demo below shows both cell painters. The underlay painter is used for the &#8220;Last&#8221; column. It paints a gradient bar based on the value. The length of the bar matches the value. The color of bar is also changed based on the range of the value. You can paint the five-star rating using this painter too.</p>
<p>The overlay painter can be used to paint something that is over the cell value, i.e., to indicate the value is abnormal, invalid, or should be emphasized etc. You can see the column &#8220;Volume&#8221; having such an overlay painter where we randomly paint an icon for some cells as an overlay. In the JIDE Common Layer, we have Overlay component which can place an overlay component over another component. It is perfect for JTextField, JComboBox etc. small component to show a validation error. However it is so useful in the case of JTable cells. The CellStyle overlay painter feature is here to fill in the gap. You can now easily display validation errors using this new feature.</p>
<p><img class="aligncenter" title="Cell Overlay and Underlay" src="http://www.jidesoft.com/images/cell-overlay-underlay.png" alt="" width="944" height="477" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jidesoft.com/blog/2012/01/17/152/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Alphanum Sorting</title>
		<link>http://www.jidesoft.com/blog/2011/12/07/alphanum-sorting/</link>
		<comments>http://www.jidesoft.com/blog/2011/12/07/alphanum-sorting/#comments</comments>
		<pubDate>Wed, 07 Dec 2011 22:19:12 +0000</pubDate>
		<dc:creator>David Qiao</dc:creator>
				<category><![CDATA[Java and Swing]]></category>
		<category><![CDATA[JIDE]]></category>
		<category><![CDATA[alphanum]]></category>
		<category><![CDATA[sorting]]></category>
		<category><![CDATA[swing]]></category>

		<guid isPermaLink="false">http://www.jidesoft.com/blog/?p=139</guid>
		<description><![CDATA[While working on an issue related to the file encoding, I am trying to adjust the file encoding settings in IntelliJ IDEA. I noticed something not quite right about the sort order of the encodings. Naturally the ISO-8859-2 to ISO-8859-10 should appear before ISO-8859-13 and -15. UTF-8 should also appear before UTF-16 and UTF-32. Clearly IntelliJ [...]]]></description>
			<content:encoded><![CDATA[<p>While working on an issue related to the file encoding, I am trying to adjust the file encoding settings in IntelliJ IDEA. I noticed something not quite right about the sort order of the encodings. Naturally the ISO-8859-2 to ISO-8859-10 should appear before ISO-8859-13 and -15. UTF-8 should also appear before UTF-16 and UTF-32. Clearly IntelliJ is doing a straight alphabetic sorting.</p>
<p><a href="http://www.jidesoft.com/blog/wp-content/uploads/2011/12/idea-encoding.png"><img class="size-full wp-image-140 alignnone" title="idea-encoding" src="http://www.jidesoft.com/blog/wp-content/uploads/2011/12/idea-encoding.png" alt="" width="584" height="301" /></a></p>
<p><a style="text-align: left;" href="http://www.jidesoft.com/blog/wp-content/uploads/2011/12/idea-encoding-21.png"><img class="alignnone size-full wp-image-142" title="idea-encoding-2" src="http://www.jidesoft.com/blog/wp-content/uploads/2011/12/idea-encoding-21.png" alt="" width="579" height="176" /></a></p>
<div style="text-align: left;">We actually resolved this issue a while ago in the open source JIDE Common Layer. There is a comparator called AlphanumComparator under jidesoft.comparator package. (courtesy to David Koelle). As long as you use this comparator, it will sort the strings with numbers correctly according to what users would expect. See below. The list on the left is the straight alphabetic sorting. The list on the right is using the alphanum sorting.</div>
<div style="text-align: left;"><a href="http://www.jidesoft.com/blog/wp-content/uploads/2011/12/alphanum.png"><img class="alignnone size-full wp-image-143" title="alphanum" src="http://www.jidesoft.com/blog/wp-content/uploads/2011/12/alphanum.png" alt="" width="264" height="327" /></a></div>
<div style="text-align: left;">If you are using SortableComboBoxModel or SortableListModel, you can simply call the code below to enable the alphanum sorting.</div>
<div style="text-align: left;">
<pre>  sortableComboBoxModel.setComparatorContext(AlphanumComparator.CONTEXT);</pre>
<pre>and</pre>
<pre>  sortableListModel.setComparatorContext(AlphanumComparator.CONTEXT);</pre>
</div>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jidesoft.com/blog/2011/12/07/alphanum-sorting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ExpandedTip &#8211; A must-have feature for your JTree and JList</title>
		<link>http://www.jidesoft.com/blog/2011/11/23/expanded-tip/</link>
		<comments>http://www.jidesoft.com/blog/2011/11/23/expanded-tip/#comments</comments>
		<pubDate>Wed, 23 Nov 2011 06:57:38 +0000</pubDate>
		<dc:creator>David Qiao</dc:creator>
				<category><![CDATA[Java and Swing]]></category>
		<category><![CDATA[JIDE]]></category>
		<category><![CDATA[java swing tip]]></category>

		<guid isPermaLink="false">http://www.jidesoft.com/blog/?p=133</guid>
		<description><![CDATA[When I started to use IntelliJ IDEA back in 2002, I noticed two simple but neat UI features. The first one is the Searchable feature (type and search in a list or a tree or a table), an idea that we shamelessly copied (and enhanced), and several years ago made part of the open source [...]]]></description>
			<content:encoded><![CDATA[<p>When I started to use IntelliJ IDEA back in 2002, I noticed two simple but neat UI features.</p>
<p>The first one is the Searchable feature (type and search in a list or a tree or a table), an idea that we shamelessly copied (and enhanced), and several years ago made part of the open source JIDE Common Layer. See below.</p>
<p><img class="alignnone" title="searchable list" src="http://www.jidesoft.com/images/searchable-list.png" alt="searchable list" width="260" height="228" /></p>
<p>The second feature is where tree nodes or list rows expand to a tool-tip when the text is wider than the scroll pane. We finally implemented this feature by leveraging some source code from the IDEA community edition which was open sourced under Apache license. We implemented TreeExpandedTip, ListExpandedTip and TableExpandedTip to support JTree, JList and JTable respectively. In order to make this feature easier to use, we completely changed the API and also enhanced it so that it can handle any component inside a JScrollPane. In the new ExpandedTipDemo, you will find a demo to show a whole image as an expanded tip.</p>
<p><img class="alignnone" title="ExpandedTip" src="http://www.jidesoft.com/images/expanded-tip.png" alt="expanded tip" width="932" height="267" /></p>
<p>The newsletter stops right here. But I would like to discuss in a little more detail.</p>
<p><strong>Why the expanded tip feature is important?</strong></p>
<p>I love IntelliJ IDEA. If there weren&#8217;t IDEA, I probably won&#8217;t be here making JIDE components. I am not kidding. I still remembered how happy I was when someone referred it to me back in 2001. Half an year later, I found JIDE using IDEA as my only Java IDE. Sometimes I asked me why I love IntelliJ IDEA so much. One of the reasons is probably IDEA&#8217;s usability is great, much better than that of NB or Eclipse. The two features I mentioned above are such examples.</p>
<p>Does your application have a JList or JTree that have many rows (say more than 20) but you didn&#8217;t bother in implementing the Searchable feature? If the answer is yes, it means you didn&#8217;t put in enough attention to your application&#8217;s usability. Your users will suffer from your ignorance as they will have to scroll up and down in tons of items to find the item they are looking for.</p>
<p>The same argument is there for the expanded tip. When a user can&#8217;t see the whole node, he/she has to move the mouse all the way to the bottom horizontal scroll bar, drag it to see the rest of the content, and probably need to drag back again in order to expand/collapse the tree node. The trouble could easily be avoid by using the expanded tip feature. Your users will surely appreciate if you can pay attention to those usability details.</p>
<p>The action item for you today is to find all your JList, JTree and JTable in your application and install the ExpanedTip. Just one line: ExpandedTipUtils.install(a JList/JTree/JTable). Let&#8217;s see how your user will love it.</p>
<p><strong>What&#8217;s next?</strong></p>
<p>I think the feature is fully implemented for the JList and JTree. However it is still half done for the JTable. There are two parts to show clipped content in a JTable &#8211; the cell level and the row level. As you can see in the screenshot above, we implemented at the row level. User still can&#8217;t see the full content of the cell (such as AMER INTL&#8230;). Our suggestion right now is to show the full content of the cell using a regular tooltip. It can done by setting the tooltip for the cell renderer component. See below. However I still hope we could implement the expanded tip to cover the extra effort.</p>
<p><img class="alignnone" title="expanded-tip with tooltip" src="http://www.jidesoft.com/images/expanded-tip-with-tooltip.png" alt="expanded-tip with tooltip" width="435" height="128" /></p>
<p>Note: The ExpandedTip is available since JIDE 3.3.0 release. It is part of the JIDE Components product. You can a <a href="http://www.jidesoft.com/products/download.htm">webstart demo</a> at here to see it in action.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jidesoft.com/blog/2011/11/23/expanded-tip/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Having Fun with StyledLabel</title>
		<link>http://www.jidesoft.com/blog/2011/09/10/styledlabel/</link>
		<comments>http://www.jidesoft.com/blog/2011/09/10/styledlabel/#comments</comments>
		<pubDate>Sat, 10 Sep 2011 19:07:12 +0000</pubDate>
		<dc:creator>David Qiao</dc:creator>
				<category><![CDATA[Java and Swing]]></category>
		<category><![CDATA[JIDE]]></category>

		<guid isPermaLink="false">http://www.jidesoft.com/blog/?p=94</guid>
		<description><![CDATA[I’ll start with a question. Using Java Swing, how do you implement something like these? &#160; All three examples are very common in a real application. The first one is to show a ™ trademark sign next to Java. It is the same thing for a ® (registered trademark) sign. The second one is a [...]]]></description>
			<content:encoded><![CDATA[<p>I’ll start with a question. Using Java Swing, how do you implement something like these?</p>
<p><a href="http://www.jidesoft.com/blog/wp-content/uploads/2011/09/styledlabel.png"><img class="aligncenter size-full wp-image-101" title="styledlabel" src="http://www.jidesoft.com/blog/wp-content/uploads/2011/09/styledlabel.png" alt="" width="202" height="28" /></a></p>
<p>&nbsp;</p>
<p>All three examples are very common in a real application.</p>
<ol>
<li>The first one is to show a ™ trademark sign next to Java. It is the same thing for a ® (registered trademark) sign.</li>
<li>The second one is a math formula.</li>
<li>The third one indicates the text has an error.</li>
</ol>
<p>We want to use both the red color and a waved underline to indicate the error. Keep in mind, from accessibility point of view, only the red color is not enough because of color blindness.</p>
<p>Please continue reading the rest of the article at <a title="StyledLabel" href="http://www.jidesoft.com/articles/StyledLabel.pdf">http://www.jidesoft.com/articles/StyledLabel.pdf</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jidesoft.com/blog/2011/09/10/styledlabel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Slides for JavaOne 2010 &#8211; The Merging Point of Android and Swing</title>
		<link>http://www.jidesoft.com/blog/2010/09/23/slides-for-javaone-2010-the-merging-point-of-android-and-swing/</link>
		<comments>http://www.jidesoft.com/blog/2010/09/23/slides-for-javaone-2010-the-merging-point-of-android-and-swing/#comments</comments>
		<pubDate>Thu, 23 Sep 2010 19:23:48 +0000</pubDate>
		<dc:creator>David Qiao</dc:creator>
				<category><![CDATA[Java and Swing]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.jidesoft.com/blog/?p=87</guid>
		<description><![CDATA[Thanks everyone for coming to my session today. As promised, I attached the slides I used in the session below. The source code will be available next week. The Merging Point of Android and Swing (PowerPoint) The Merging Point of Android and Swing (PDF)]]></description>
			<content:encoded><![CDATA[<p>Thanks everyone for coming to my session today. As promised, I attached the slides I used in the session below. The source code will be available next week.</p>
<p><a href="http://www.jidesoft.com/blog/wp-content/uploads/2010/09/The-Merging-Point.pptx">The Merging Point of Android and Swing (PowerPoint)</a></p>
<p><a href="http://www.jidesoft.com/blog/wp-content/uploads/2010/09/The-Merging-Point.pdf">The Merging Point of Android and Swing (PDF)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jidesoft.com/blog/2010/09/23/slides-for-javaone-2010-the-merging-point-of-android-and-swing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducing MarqueePane component to the open source JIDE Common Layer</title>
		<link>http://www.jidesoft.com/blog/2009/06/18/introduce-marqueepane-component-to-open-source-jide-common-layer/</link>
		<comments>http://www.jidesoft.com/blog/2009/06/18/introduce-marqueepane-component-to-open-source-jide-common-layer/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 17:00:35 +0000</pubDate>
		<dc:creator>David Qiao</dc:creator>
				<category><![CDATA[Java and Swing]]></category>
		<category><![CDATA[JIDE]]></category>

		<guid isPermaLink="false">http://www.jidesoft.com/blog/?p=79</guid>
		<description><![CDATA[In the 2.6.6 release, we introduced a small cool component called MarqueePane to JIDE Common Layer. It is open source so please fee free to give it a try. You can use it to auto-scroll any component. It is perfect for use cases such as an auto-scrolling stock tick display or an auto-fliping status, You can run webstart demo to see [...]]]></description>
			<content:encoded><![CDATA[<p>In the 2.6.6 release, we introduced a small cool component called MarqueePane to JIDE Common Layer. It is open source so please fee free to give it a try. You can use it to auto-scroll any component. It is perfect for use cases such as an auto-scrolling stock tick display or an auto-fliping status, You can run <a href="http://jidesoft.com/products/1.4/jide_demo.jnlp">webstart demo</a> to see MarqueePane in action.</p>
<p><a href="http://www.jidesoft.com/blog/wp-content/uploads/2009/06/marquee.png"><img class="aligncenter size-full wp-image-80" title="MarqueePane" src="http://www.jidesoft.com/blog/wp-content/uploads/2009/06/marquee.png" alt="MarqueePane" width="265" height="94" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jidesoft.com/blog/2009/06/18/introduce-marqueepane-component-to-open-source-jide-common-layer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What&#8217;s wrong with Apple</title>
		<link>http://www.jidesoft.com/blog/2009/06/16/whats-wrong-with-apple/</link>
		<comments>http://www.jidesoft.com/blog/2009/06/16/whats-wrong-with-apple/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 14:08:29 +0000</pubDate>
		<dc:creator>David Qiao</dc:creator>
				<category><![CDATA[Java and Swing]]></category>
		<category><![CDATA[JIDE]]></category>
		<category><![CDATA[Mac]]></category>

		<guid isPermaLink="false">http://www.jidesoft.com/blog/?p=73</guid>
		<description><![CDATA[Apple just released a new JDK6 on Mac. It is suppose to be a good news but it turned out to be a nightmare. They changed the package structure of Aqua L&#38;F. Many classes that were under apple.laf package are now under com.apple.laf. This breaks pretty much everything we tried to make JIDE looking decent [...]]]></description>
			<content:encoded><![CDATA[<p>Apple just released a new JDK6 on Mac. It is suppose to be a good news but it turned out to be a nightmare. They changed the package structure of Aqua L&amp;F. Many classes that were under apple.laf package are now under com.apple.laf. This breaks pretty much everything we tried to make JIDE looking decent enough on Mac. Even more, I could change our code to use the new classes but how to make it compatible with both old and new JDK? Two sets of JIDE clasess or even two release packages? It is really werid to see Apple did such a strange thing in a minor JDK update (maybe make sense for JDK 7). Hope someone from Apple Java team can give me an explantion.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jidesoft.com/blog/2009/06/16/whats-wrong-with-apple/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Want to share your table screenshots?</title>
		<link>http://www.jidesoft.com/blog/2009/03/03/want-to-share-your-table-screenshots/</link>
		<comments>http://www.jidesoft.com/blog/2009/03/03/want-to-share-your-table-screenshots/#comments</comments>
		<pubDate>Tue, 03 Mar 2009 23:41:23 +0000</pubDate>
		<dc:creator>David Qiao</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Java and Swing]]></category>
		<category><![CDATA[JIDE]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.jidesoft.com/blog/?p=46</guid>
		<description><![CDATA[I got a technical session for JavaOne 2009 to talk about JTables. I knew JTables and JIDE Grids are used very widely among JIDE customers. So I am very eager to collect some screenshots from real applications to show what tables look like in the real world. It doesn&#8217;t have to be JIDE Grids. It [...]]]></description>
			<content:encoded><![CDATA[<p>I got a technical session for JavaOne 2009 to talk about JTables. I knew JTables and JIDE Grids are used very widely among JIDE customers. So I am very eager to collect some screenshots from real applications to show what tables look like in the real world. It doesn&#8217;t have to be JIDE Grids. It could be a JTable with customization or JXTable or your own table component. I will dedicate a few minutes from the session to show those screenshots to the audience. I will of course give the credit to you. If you are interested, please email me david at jidesoft.com. I am looking forward to hearing from you!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jidesoft.com/blog/2009/03/03/want-to-share-your-table-screenshots/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Arrow key support in ButtonPanel</title>
		<link>http://www.jidesoft.com/blog/2008/06/22/arrow-key-support-in-buttonpanel/</link>
		<comments>http://www.jidesoft.com/blog/2008/06/22/arrow-key-support-in-buttonpanel/#comments</comments>
		<pubDate>Sun, 22 Jun 2008 04:44:59 +0000</pubDate>
		<dc:creator>David Qiao</dc:creator>
				<category><![CDATA[Java and Swing]]></category>
		<category><![CDATA[JIDE]]></category>
		<category><![CDATA[arrow key]]></category>
		<category><![CDATA[button panel]]></category>

		<guid isPermaLink="false">http://www.jidesoft.com/blog/?p=41</guid>
		<description><![CDATA[There is one missing feature in ButtonPanel. That&#8217;s the arrow key support. On Windows (probably on Mac as well), people get used to use left or right keys to navigate among buttons on a horizontal button panel or up/down keys for vertical button panel. However Swing doesn&#8217;t have that. For example, in the JOptionPane, arrow keys don&#8217;t change [...]]]></description>
			<content:encoded><![CDATA[<p>There is one missing feature in ButtonPanel. That&#8217;s the arrow key support. On Windows (probably on Mac as well), people get used to use left or right keys to navigate among buttons on a horizontal button panel or up/down keys for vertical button panel. However Swing doesn&#8217;t have that. For example, in the JOptionPane, arrow keys don&#8217;t change button focus. So I decide to add this feature. it has about 200 lines simple code. I included it below. The javadoc tells you how to use it. It is already checked in to JIDE Common Layer so feel free to check it out and use it. JIDE&#8217;s ButtonPanel called it already. JideOptionPane, since it uses ButtonPanel, also works beautifully.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jidesoft.com/blog/2008/06/22/arrow-key-support-in-buttonpanel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Slides and demo source code for my JavaOne 2008 BOF session</title>
		<link>http://www.jidesoft.com/blog/2008/06/06/slides-and-demo-source-code-for-my-javaone-2008-bof-session/</link>
		<comments>http://www.jidesoft.com/blog/2008/06/06/slides-and-demo-source-code-for-my-javaone-2008-bof-session/#comments</comments>
		<pubDate>Fri, 06 Jun 2008 05:52:25 +0000</pubDate>
		<dc:creator>David Qiao</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Java and Swing]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.jidesoft.com/blog/?p=37</guid>
		<description><![CDATA[As I mentioned before, I had an interesting BOF session for the this year JavaOne. The title is &#8220;Workaround Swing Bugs&#8221;. Even though it was conflicted with the afterdark party, there was still a decent number of people showed up. Since several people asked for it, I post the slides and the demo source code below. Slides [...]]]></description>
			<content:encoded><![CDATA[<p>As I mentioned before, I had an interesting BOF session for the this year JavaOne. The title is &#8220;Workaround Swing Bugs&#8221;. Even though it was conflicted with the afterdark party, there was still a decent number of people showed up. Since several people asked for it, I post the slides and the demo source code below.</p>
<p><a href="http://www.jidesoft.com/blog/wp-content/uploads/2008/06/bof-5133.pdf">Slides for BOF-5133</a><br />
<a href="http://www.jidesoft.com/blog/wp-content/uploads/2008/06/bof-5133-demo.zip">Demo Souce Code for BOF-5133</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jidesoft.com/blog/2008/06/06/slides-and-demo-source-code-for-my-javaone-2008-bof-session/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

