<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Removing visual noise from tables and scroll panes</title>
	<atom:link href="http://www.pushing-pixels.org/?feed=rss2&#038;p=235" rel="self" type="application/rss+xml" />
	<link>http://www.pushing-pixels.org/?p=235</link>
	<description>Leaving no pixel behind</description>
	<lastBuildDate>Thu, 09 Sep 2010 18:02:18 -0700</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
	<item>
		<title>By: Kirill Grouchnikov</title>
		<link>http://www.pushing-pixels.org/?p=235&#038;cpage=1#comment-1002</link>
		<dc:creator>Kirill Grouchnikov</dc:creator>
		<pubDate>Tue, 22 Jan 2008 18:04:46 +0000</pubDate>
		<guid isPermaLink="false">http://www.pushing-pixels.org/?p=235#comment-1002</guid>
		<description>Thanks, Pedro

The work has only started :)</description>
		<content:encoded><![CDATA[<p>Thanks, Pedro</p>
<p>The work has only started :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Pedro Duque Vieira</title>
		<link>http://www.pushing-pixels.org/?p=235&#038;cpage=1#comment-1000</link>
		<dc:creator>Pedro Duque Vieira</dc:creator>
		<pubDate>Tue, 22 Jan 2008 17:54:07 +0000</pubDate>
		<guid isPermaLink="false">http://www.pushing-pixels.org/?p=235#comment-1000</guid>
		<description>Hello Kirril,

Once again, good work on substance it just keeps getting better and better.

Looking at the application from lawson I think some things are still missing:
* selected line:
  + selected line has a border
  + nice gradients 

* column separator:
  + separator between columns on list content is the same has the separator of headers
  + good looking separator (instead of plain single line)

*  All borders/separators are very smooth</description>
		<content:encoded><![CDATA[<p>Hello Kirril,</p>
<p>Once again, good work on substance it just keeps getting better and better.</p>
<p>Looking at the application from lawson I think some things are still missing:<br />
* selected line:<br />
  + selected line has a border<br />
  + nice gradients </p>
<p>* column separator:<br />
  + separator between columns on list content is the same has the separator of headers<br />
  + good looking separator (instead of plain single line)</p>
<p>*  All borders/separators are very smooth</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kirill Grouchnikov</title>
		<link>http://www.pushing-pixels.org/?p=235&#038;cpage=1#comment-998</link>
		<dc:creator>Kirill Grouchnikov</dc:creator>
		<pubDate>Mon, 21 Jan 2008 23:55:11 +0000</pubDate>
		<guid isPermaLink="false">http://www.pushing-pixels.org/?p=235#comment-998</guid>
		<description>Mikael,

Thanks for the kind words.

Kirill</description>
		<content:encoded><![CDATA[<p>Mikael,</p>
<p>Thanks for the kind words.</p>
<p>Kirill</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kirill Grouchnikov</title>
		<link>http://www.pushing-pixels.org/?p=235&#038;cpage=1#comment-991</link>
		<dc:creator>Kirill Grouchnikov</dc:creator>
		<pubDate>Sun, 20 Jan 2008 19:55:26 +0000</pubDate>
		<guid isPermaLink="false">http://www.pushing-pixels.org/?p=235#comment-991</guid>
		<description>Wolfgang,

1. I&#039;ve updated the screenshots to show what Synthetica installs as a default LAF. It still results in double border on the right-hand side, but now it is less visible (no white space). And I don&#039;t completely agree with you about the behavior of “Table.scrollPaneBorder” - the screenshots of Substance show how it looks like *after* switch from Metal at runtime. Since a LAF should mark this property as UIResource, the new LAF is free to uninstall the old border and install its own. The trick is how to make the scroll pane border blend in with the scroll bar and the viewport so it appears as one. You can see the source of SubstanceScrollPaneUI / AdjustedLayout / SubstanceScrollPaneBorder.
2. The top-right / top-left scroll pane corner is installed in Substance internally, without the need to the application to do it explicitly. So, it is possible to do so in LAF, and you might consider doing so in Synthetica as well if you agree that this results in better visual appearance.
3. This specific application doesn&#039;t have any LAF-aware grid settings. All it does is to call setShowGrid(false). It doesn&#039;t play with column margin or intercell spacing. 

Thanks
Kirill</description>
		<content:encoded><![CDATA[<p>Wolfgang,</p>
<p>1. I&#8217;ve updated the screenshots to show what Synthetica installs as a default LAF. It still results in double border on the right-hand side, but now it is less visible (no white space). And I don&#8217;t completely agree with you about the behavior of “Table.scrollPaneBorder” &#8211; the screenshots of Substance show how it looks like *after* switch from Metal at runtime. Since a LAF should mark this property as UIResource, the new LAF is free to uninstall the old border and install its own. The trick is how to make the scroll pane border blend in with the scroll bar and the viewport so it appears as one. You can see the source of SubstanceScrollPaneUI / AdjustedLayout / SubstanceScrollPaneBorder.<br />
2. The top-right / top-left scroll pane corner is installed in Substance internally, without the need to the application to do it explicitly. So, it is possible to do so in LAF, and you might consider doing so in Synthetica as well if you agree that this results in better visual appearance.<br />
3. This specific application doesn&#8217;t have any LAF-aware grid settings. All it does is to call setShowGrid(false). It doesn&#8217;t play with column margin or intercell spacing. </p>
<p>Thanks<br />
Kirill</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kirill Grouchnikov</title>
		<link>http://www.pushing-pixels.org/?p=235&#038;cpage=1#comment-990</link>
		<dc:creator>Kirill Grouchnikov</dc:creator>
		<pubDate>Sun, 20 Jan 2008 19:45:37 +0000</pubDate>
		<guid isPermaLink="false">http://www.pushing-pixels.org/?p=235#comment-990</guid>
		<description>Pierre - the first screenshot of Nimbus is not a screenshot of an actual application (at least not under Nimbus LAF). It is the design that drives the development of Nimbus, and was most probably done in Photoshop or in another tool.</description>
		<content:encoded><![CDATA[<p>Pierre &#8211; the first screenshot of Nimbus is not a screenshot of an actual application (at least not under Nimbus LAF). It is the design that drives the development of Nimbus, and was most probably done in Photoshop or in another tool.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: wzberger</title>
		<link>http://www.pushing-pixels.org/?p=235&#038;cpage=1#comment-989</link>
		<dc:creator>wzberger</dc:creator>
		<pubDate>Sun, 20 Jan 2008 14:45:14 +0000</pubDate>
		<guid isPermaLink="false">http://www.pushing-pixels.org/?p=235#comment-989</guid>
		<description>Related to spacing I&#039;m not quite sure if it is a good idea to remove white lines by default because the same effect can be reached by setting the intercell spacing (JTable#setIntercellSpacing()) to zero dimension. So 

    table.setIntercellSpacing(new Dimension(0,0));
    table.setShowGrid(false);

removes the complete grid. Doesn&#039;t matter if rows are selected or not. On the other hand it&#039;s useful to display horizontal lines only for multiple selected rows.

    //don&#039;t display grid but show horizontal lines when multiple lines selected 
    table.getColumnModel().setColumnMargin(0);
    table.setShowGrid(false);

Currently I think it&#039;s better to let the user decide on how grid lines appear and to avoid to differ from the attitude of existing look and feels like Metal. If not, doesn&#039;t this mean that you have to add extra lines of code within an application to support Metal and Substance?</description>
		<content:encoded><![CDATA[<p>Related to spacing I&#8217;m not quite sure if it is a good idea to remove white lines by default because the same effect can be reached by setting the intercell spacing (JTable#setIntercellSpacing()) to zero dimension. So </p>
<p>    table.setIntercellSpacing(new Dimension(0,0));<br />
    table.setShowGrid(false);</p>
<p>removes the complete grid. Doesn&#8217;t matter if rows are selected or not. On the other hand it&#8217;s useful to display horizontal lines only for multiple selected rows.</p>
<p>    //don&#8217;t display grid but show horizontal lines when multiple lines selected<br />
    table.getColumnModel().setColumnMargin(0);<br />
    table.setShowGrid(false);</p>
<p>Currently I think it&#8217;s better to let the user decide on how grid lines appear and to avoid to differ from the attitude of existing look and feels like Metal. If not, doesn&#8217;t this mean that you have to add extra lines of code within an application to support Metal and Substance?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: wzberger</title>
		<link>http://www.pushing-pixels.org/?p=235&#038;cpage=1#comment-988</link>
		<dc:creator>wzberger</dc:creator>
		<pubDate>Sun, 20 Jan 2008 10:53:19 +0000</pubDate>
		<guid isPermaLink="false">http://www.pushing-pixels.org/?p=235#comment-988</guid>
		<description>Hi Kirill,

first of all thanks for the good article.

Some Synthetica related hints:

The displayed table border is the default border for scrollpanes. The border appears when switching from one theme to another without an application restart. On an initial application start with Synthetica the correct table border appears. 

The wrong (scrollpane) border appears because JTable statically installs the border through the &quot;Table.scrollPaneBorder&quot; key. But because the border is an UIResource, on a LAF switch the original scrollpane-border will be reinstalled. A possible workaround is to override #updateUI:

    JScrollPane scrollPane = new JScrollPane(table){
      @Override
      public void updateUI(){
        super.updateUI();
        setBorder(UIManager.getBorder(&quot;Table.scrollPaneBorder&quot;));}
    };


Another tip which can be used to display the upper right corner as table header:

JTableHeader th = new JTableHeader();
th.setTable(table);
tableScrollPane.setCorner(JScrollPane.UPPER_TRAILING_CORNER, th);

Cheers,
Wolfgang</description>
		<content:encoded><![CDATA[<p>Hi Kirill,</p>
<p>first of all thanks for the good article.</p>
<p>Some Synthetica related hints:</p>
<p>The displayed table border is the default border for scrollpanes. The border appears when switching from one theme to another without an application restart. On an initial application start with Synthetica the correct table border appears. </p>
<p>The wrong (scrollpane) border appears because JTable statically installs the border through the &#8220;Table.scrollPaneBorder&#8221; key. But because the border is an UIResource, on a LAF switch the original scrollpane-border will be reinstalled. A possible workaround is to override #updateUI:</p>
<p>    JScrollPane scrollPane = new JScrollPane(table){<br />
      @Override<br />
      public void updateUI(){<br />
        super.updateUI();<br />
        setBorder(UIManager.getBorder(&#8220;Table.scrollPaneBorder&#8221;));}<br />
    };</p>
<p>Another tip which can be used to display the upper right corner as table header:</p>
<p>JTableHeader th = new JTableHeader();<br />
th.setTable(table);<br />
tableScrollPane.setCorner(JScrollPane.UPPER_TRAILING_CORNER, th);</p>
<p>Cheers,<br />
Wolfgang</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mikael Grev</title>
		<link>http://www.pushing-pixels.org/?p=235&#038;cpage=1#comment-987</link>
		<dc:creator>Mikael Grev</dc:creator>
		<pubDate>Sun, 20 Jan 2008 10:08:30 +0000</pubDate>
		<guid isPermaLink="false">http://www.pushing-pixels.org/?p=235#comment-987</guid>
		<description>Excellent Kirill! You are designing better and better stuff, and this is really good! :)
Also, I really wish that Nimbus would stop with the multi stop gradients (e.g. header gradient) . Hot in 2006, not hot now... ;)</description>
		<content:encoded><![CDATA[<p>Excellent Kirill! You are designing better and better stuff, and this is really good! :)<br />
Also, I really wish that Nimbus would stop with the multi stop gradients (e.g. header gradient) . Hot in 2006, not hot now&#8230; ;)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Pierre</title>
		<link>http://www.pushing-pixels.org/?p=235&#038;cpage=1#comment-986</link>
		<dc:creator>Pierre</dc:creator>
		<pubDate>Sun, 20 Jan 2008 07:54:13 +0000</pubDate>
		<guid isPermaLink="false">http://www.pushing-pixels.org/?p=235#comment-986</guid>
		<description>Thanks Kirill, that&#039;s very slick!
Just curious though, why does the nimbus screenshot at the top of post seem to be devoid of all the &quot;problems&quot;?</description>
		<content:encoded><![CDATA[<p>Thanks Kirill, that&#8217;s very slick!<br />
Just curious though, why does the nimbus screenshot at the top of post seem to be devoid of all the &#8220;problems&#8221;?</p>
]]></content:encoded>
	</item>
</channel>
</rss>
