﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-川流不息</title><link>http://www.blogjava.net/linjuddpk/</link><description /><language>zh-cn</language><lastBuildDate>Sun, 12 Apr 2026 09:41:00 GMT</lastBuildDate><pubDate>Sun, 12 Apr 2026 09:41:00 GMT</pubDate><ttl>60</ttl><item><title>初始化JTable 各列的宽度</title><link>http://www.blogjava.net/linjuddpk/archive/2008/12/12/245950.html</link><dc:creator>川流不息</dc:creator><author>川流不息</author><pubDate>Fri, 12 Dec 2008 06:06:00 GMT</pubDate><guid>http://www.blogjava.net/linjuddpk/archive/2008/12/12/245950.html</guid><wfw:comment>http://www.blogjava.net/linjuddpk/comments/245950.html</wfw:comment><comments>http://www.blogjava.net/linjuddpk/archive/2008/12/12/245950.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/linjuddpk/comments/commentRss/245950.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/linjuddpk/services/trackbacks/245950.html</trackback:ping><description><![CDATA[<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">typeTable.setPreferredScrollableViewportSize(typeTable.getPreferredSize());<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />JScrollPane&nbsp;typeTableScrollPane</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;JScrollPane(typeTable);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />mt.pack();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />mt.setVisible(</span><span style="color: #0000ff">true</span><span style="color: #000000">);</span></div>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.awt.</span><span style="color: #000000">*</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.swing.</span><span style="color: #000000">*</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_82_886_Open_Image" onclick="this.style.display='none'; Codehighlighter1_82_886_Open_Text.style.display='none'; Codehighlighter1_82_886_Closed_Image.style.display='inline'; Codehighlighter1_82_886_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_82_886_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_82_886_Closed_Text.style.display='none'; Codehighlighter1_82_886_Open_Image.style.display='inline'; Codehighlighter1_82_886_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;MixerTest2&nbsp;</span><span style="color: #0000ff">extends</span><span style="color: #000000">&nbsp;JFrame&nbsp;</span><span id="Codehighlighter1_82_886_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_82_886_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_105_785_Open_Image" onclick="this.style.display='none'; Codehighlighter1_105_785_Open_Text.style.display='none'; Codehighlighter1_105_785_Closed_Image.style.display='inline'; Codehighlighter1_105_785_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_105_785_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_105_785_Closed_Text.style.display='none'; Codehighlighter1_105_785_Open_Image.style.display='inline'; Codehighlighter1_105_785_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;MixerTest2()&nbsp;</span><span id="Codehighlighter1_105_785_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_105_785_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">super</span><span style="color: #000000">(</span><span style="color: #000000">"</span><span style="color: #000000">Customer&nbsp;Editor&nbsp;Test</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />setSize(</span><span style="color: #000000">600</span><span style="color: #000000">,</span><span style="color: #000000">160</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />setDefaultCloseOperation(EXIT_ON_CLOSE);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />JTable&nbsp;typeTable</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;JTable();<br />
<img id="Codehighlighter1_266_426_Open_Image" onclick="this.style.display='none'; Codehighlighter1_266_426_Open_Text.style.display='none'; Codehighlighter1_266_426_Closed_Image.style.display='inline'; Codehighlighter1_266_426_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_266_426_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_266_426_Closed_Text.style.display='none'; Codehighlighter1_266_426_Open_Image.style.display='inline'; Codehighlighter1_266_426_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />typeTable</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;JTable(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;String&nbsp;[][]&nbsp;</span><span id="Codehighlighter1_266_426_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_266_426_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_268_297_Open_Image" onclick="this.style.display='none'; Codehighlighter1_268_297_Open_Text.style.display='none'; Codehighlighter1_268_297_Closed_Image.style.display='inline'; Codehighlighter1_268_297_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_268_297_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_268_297_Closed_Text.style.display='none'; Codehighlighter1_268_297_Open_Image.style.display='inline'; Codehighlighter1_268_297_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_268_297_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_268_297_Open_Text"><span style="color: #000000">{</span><span style="color: #000000">"</span><span style="color: #000000">312fs</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">33232</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">32</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">32</span><span style="color: #000000">"</span><span style="color: #000000">}</span></span><span style="color: #000000">,<br />
<img id="Codehighlighter1_300_334_Open_Image" onclick="this.style.display='none'; Codehighlighter1_300_334_Open_Text.style.display='none'; Codehighlighter1_300_334_Closed_Image.style.display='inline'; Codehighlighter1_300_334_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_300_334_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_300_334_Closed_Text.style.display='none'; Codehighlighter1_300_334_Open_Image.style.display='inline'; Codehighlighter1_300_334_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_300_334_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_300_334_Open_Text"><span style="color: #000000">{</span><span style="color: #000000">"</span><span style="color: #000000">3212fsdfa12</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">3322</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">32</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">32</span><span style="color: #000000">"</span><span style="color: #000000">}</span></span><span style="color: #000000">,<br />
<img id="Codehighlighter1_337_378_Open_Image" onclick="this.style.display='none'; Codehighlighter1_337_378_Open_Text.style.display='none'; Codehighlighter1_337_378_Closed_Image.style.display='inline'; Codehighlighter1_337_378_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_337_378_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_337_378_Closed_Text.style.display='none'; Codehighlighter1_337_378_Open_Image.style.display='inline'; Codehighlighter1_337_378_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_337_378_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_337_378_Open_Text"><span style="color: #000000">{</span><span style="color: #000000">"</span><span style="color: #000000">3212fa12</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">321212</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">321212</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">321212</span><span style="color: #000000">"</span><span style="color: #000000">}</span></span><span style="color: #000000">,<br />
<img id="Codehighlighter1_381_424_Open_Image" onclick="this.style.display='none'; Codehighlighter1_381_424_Open_Text.style.display='none'; Codehighlighter1_381_424_Closed_Image.style.display='inline'; Codehighlighter1_381_424_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_381_424_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_381_424_Closed_Text.style.display='none'; Codehighlighter1_381_424_Open_Image.style.display='inline'; Codehighlighter1_381_424_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_381_424_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_381_424_Open_Text"><span style="color: #000000">{</span><span style="color: #000000">"</span><span style="color: #000000">3212gsds12</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">321212</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">321212</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">321212</span><span style="color: #000000">"</span><span style="color: #000000">}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000">,<br />
<img id="Codehighlighter1_443_488_Open_Image" onclick="this.style.display='none'; Codehighlighter1_443_488_Open_Text.style.display='none'; Codehighlighter1_443_488_Closed_Image.style.display='inline'; Codehighlighter1_443_488_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_443_488_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_443_488_Closed_Text.style.display='none'; Codehighlighter1_443_488_Open_Image.style.display='inline'; Codehighlighter1_443_488_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;String&nbsp;[]&nbsp;</span><span id="Codehighlighter1_443_488_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_443_488_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">"</span><span style="color: #000000">Title&nbsp;1</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Title&nbsp;2</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Title&nbsp;3</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Title&nbsp;4</span><span style="color: #000000">"</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />typeTable.setAutoResizeMode(JTable.AUTO_RESIZE_NEXT_COLUMN);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />typeTable.getColumnModel().getColumn(</span><span style="color: #000000">0</span><span style="color: #000000">).setPreferredWidth(</span><span style="color: #000000">10</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />typeTable.getColumnModel().getColumn(</span><span style="color: #000000">1</span><span style="color: #000000">).setPreferredWidth(</span><span style="color: #000000">30</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />JScrollPane&nbsp;typeTableScrollPane</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;JScrollPane(typeTable);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />getContentPane().add(typeTableScrollPane);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_827_884_Open_Image" onclick="this.style.display='none'; Codehighlighter1_827_884_Open_Text.style.display='none'; Codehighlighter1_827_884_Closed_Image.style.display='inline'; Codehighlighter1_827_884_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_827_884_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_827_884_Closed_Text.style.display='none'; Codehighlighter1_827_884_Open_Image.style.display='inline'; Codehighlighter1_827_884_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String&nbsp;args[])&nbsp;</span><span id="Codehighlighter1_827_884_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_827_884_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />MixerTest2&nbsp;mt&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;MixerTest2();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />mt.setVisible(</span><span style="color: #0000ff">true</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
在上面的代码中，我打算在JTable初始化的过程中，调用typeTable.getColumnModel().getColumn(0).setPreferredWidth(10);初始化各列的宽度。<br />
但实际的情况是，只有我将初始值设为大于75时，该命令才会成功，否则就是各列均等。<br />
原因：<br />
没有具体指定宽度的列，JTable会默认的设置为75。<br />
JTable 的宽度=10+30+75+75=190&nbsp;<br />
而在我的这个样例程序中，JFrame 宽度为600，远远大于JTable 的宽度。因此程序按照我的初始值绘制完JTable之后，会自动的根据JFrame 的大小及布局再重新调整。这样就造成与代码不符的情况。<br />
在网上查询到，有人推荐使用<font style="background-color: #dfd8f1">Table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);这样会解决问题，但同时我们也失去使用AutoResizeMode的好处。<br />
将代码修改如下，问题解决：<br />
</font>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">typeTable.setPreferredScrollableViewportSize(typeTable.getPreferredSize());<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />JScrollPane&nbsp;typeTableScrollPane</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;JScrollPane(typeTable);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />mt.pack();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />mt.setVisible(</span><span style="color: #0000ff">true</span><span style="color: #000000">);</span></div>
<br />
<br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/linjuddpk/aggbug/245950.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/linjuddpk/" target="_blank">川流不息</a> 2008-12-12 14:06 <a href="http://www.blogjava.net/linjuddpk/archive/2008/12/12/245950.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在JPanel里面重新布置组件</title><link>http://www.blogjava.net/linjuddpk/archive/2008/12/12/245943.html</link><dc:creator>川流不息</dc:creator><author>川流不息</author><pubDate>Fri, 12 Dec 2008 05:43:00 GMT</pubDate><guid>http://www.blogjava.net/linjuddpk/archive/2008/12/12/245943.html</guid><wfw:comment>http://www.blogjava.net/linjuddpk/comments/245943.html</wfw:comment><comments>http://www.blogjava.net/linjuddpk/archive/2008/12/12/245943.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/linjuddpk/comments/commentRss/245943.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/linjuddpk/services/trackbacks/245943.html</trackback:ping><description><![CDATA[<p>使用命令重新设置JPanel的布局。<br />
1）在JPanel上添加或者删除组件；<br />
2）完成布局；<br />
3）调用 <font style="background-color: #dfd8f1">validate();使新布局有效。</font><br />
</p>
<img src ="http://www.blogjava.net/linjuddpk/aggbug/245943.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/linjuddpk/" target="_blank">川流不息</a> 2008-12-12 13:43 <a href="http://www.blogjava.net/linjuddpk/archive/2008/12/12/245943.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>NetBeans Look and Feel （转载）</title><link>http://www.blogjava.net/linjuddpk/archive/2008/11/14/240489.html</link><dc:creator>川流不息</dc:creator><author>川流不息</author><pubDate>Fri, 14 Nov 2008 03:52:00 GMT</pubDate><guid>http://www.blogjava.net/linjuddpk/archive/2008/11/14/240489.html</guid><wfw:comment>http://www.blogjava.net/linjuddpk/comments/240489.html</wfw:comment><comments>http://www.blogjava.net/linjuddpk/archive/2008/11/14/240489.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/linjuddpk/comments/commentRss/240489.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/linjuddpk/services/trackbacks/240489.html</trackback:ping><description><![CDATA[<h2>Look And Feel for NetBeans</h2>
<div class="t_msgfont" id="postmessage_41109">此帖讨论NetBeans的非默认样式的用法，基于命令行。<br />
这里笔者将&#8220;laf(Look And Feel)&#8221;译为&#8220;样式&#8221;<br />
<br />
因为NetBeans是基于Swing的，这使得NetBeans具有了百变面孔，相当可爱哟！<br />
<br />
了解<span class="t_tag" onclick="tagshow(event)" href="http://www.opentech.org.cn/bbs/tag.php?name=Java">Java</span> Swing 的人可能知道Swing 的Look and Feel 是很灵活的，现在就有很多的实现。下面是笔者知道的windows平台的一些列表：<br />
<ul type="1">
    <li>javax.swing.plaf.metal.MetalLookAndFeel
    <li>com.sun.java.swing.plaf.motif.MotifLookAndFeel
    <li>com.sun.java.swing.plaf.windows.WindowsLookAndFeel
    <li>com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel
    <li><a href="https://nimbus.dev.java.net/" target="_blank">org.jdesktop.swingx.plaf.nimbus.NimbusLookAndFeel</a>
    <li><a href="http://napkinlaf.sourceforge.net/" target="_blank">net.sourceforge.napkinlaf.NapkinLookAndFeel</a>
    <li><a href="https://substance.dev.java.net/" target="_blank">org.jvnet.substance.SubstanceLookAndFeel</a> </li>
</ul>
其中前四种是jdk自带的，后三种比较有趣。（因为笔者还没有申请到opensolaris，只知道windows，渴望中）。<br />
注意今天的实现方式是跨平台的。<br />
<br />
打开这个路径C:\Program Files\netbeans-5.5\bin，检查是否有nb.exe<br />
打开命令行输入cd "C:\Program Files\netbeans-5.5\bin"回车<br />
输入nb --laf javax.swing.plaf.metal.MetalLookAndFeel<br />
这样NetBeans就打开了，其样式与原来的有什么不同？下面是笔者的图片<br />
命令行：<br />
<img onclick="zoom(this)" alt="" src="http://jroller.org/prosp4300/resource/netbeans_MetalLookAndFeel.JPG" onload="attachimg(this, 'load')" border="0" /><br />
NetBeans：<br />
<img onclick="zoom(this)" alt="" src="http://jroller.org/prosp4300/resource/netbeans_MetalLookAndFeel2.JPG" onload="attachimg(this, 'load')" border="0" /><br />
<br />
用这种方法可以顺利的看到前四种的结果，其中第3种是windows下NetBeans默认的样式。<br />
而对于其它三种则没有效果，因为根本就没有找到那些类。<br />
输出窗口报错如下：<br />
UI class not found, using default UI...<br />
<br />
现在介绍其它三种效果的实现方法。<br />
首先，需要获得它们的jar包，你可能已发现我在上面给这三种样式加了链接，点进去下载吧<br />
下面以substance为例，这儿下它的包<br />
https://substance.dev.java.net/files/documents/3294/55844/substance.jar<br />
放到D:\下<br />
打开命令行输入cd "C:\Program Files\netbeans-5.5\bin"回车<br />
输入nb --cp:a "D:\substance.jar" --laf org.jvnet.substance.SubstanceLookAndFeel<br />
这样NetBeans就打开了，其样式与原来的有什么不同？下面是笔者的图片<br />
<img onclick="zoom(this)" alt="" src="http://www.jroller.com/prosp4300/resource/netbeans_SubstanceLookAndFeel.JPG" onload="attachimg(this, 'load')" border="0" /><br />
<br />
<br />
---------------------------------------------------------------------------------------------------------------------------------------------------------------<br />
<br />
每次都在命令行中启动，过于繁琐。可以在NETBEAN 的配置文件中加入配置参数：<br />
1）下载 look and feel jar 包到硬盘上<br />
2）打开netbean安装路径下的etc\netbeans.conf<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 增加下面一下行:<br />
<font style="background-color: #bdc1ea">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font style="background-color: #bdc1ea">netbeans_default_options="--cp:p C:\javaplugin\PgsLookAndFeel.jar --laf com.pagosoft.plaf.PgsLookAndFeel"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --cp:p C:\javaplugin\PgsLookAndFeel.jar 作用是把look and feel jar 加到Netbean启动路径上；<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --laf com.pagosoft.plaf.PgsLookAndFeel&nbsp;&nbsp;作用为启用指定的look and feel。<br />
</font></font></div>
<img src ="http://www.blogjava.net/linjuddpk/aggbug/240489.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/linjuddpk/" target="_blank">川流不息</a> 2008-11-14 11:52 <a href="http://www.blogjava.net/linjuddpk/archive/2008/11/14/240489.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>连接带有密码的MDB数据库</title><link>http://www.blogjava.net/linjuddpk/archive/2008/10/02/232057.html</link><dc:creator>川流不息</dc:creator><author>川流不息</author><pubDate>Wed, 01 Oct 2008 19:07:00 GMT</pubDate><guid>http://www.blogjava.net/linjuddpk/archive/2008/10/02/232057.html</guid><wfw:comment>http://www.blogjava.net/linjuddpk/comments/232057.html</wfw:comment><comments>http://www.blogjava.net/linjuddpk/archive/2008/10/02/232057.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/linjuddpk/comments/commentRss/232057.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/linjuddpk/services/trackbacks/232057.html</trackback:ping><description><![CDATA[<font style="background-color: #bdc1ea">数据库为&nbsp;JavaFee.mdb 存放在DATA 目录下，密码为：1234.<br />
连接语句如下<br />
try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String path=System.getProperty("user.dir");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String strurl = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ="+path+"\\Data\\JavaFee.mdb;pwd="+"1234"+";";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; con = DriverManager.getConnection(strurl);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (SQLException ex) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JOptionPane.showMessageDialog(MoneyControlView.this, "数据库文件丢失,请检查！", "数据检查", JOptionPane.ERROR_MESSAGE);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (ClassNotFoundException ex) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Logger.getLogger(MoneyControlView.class.getName()).log(Level.SEVERE, null, ex);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font>
<img src ="http://www.blogjava.net/linjuddpk/aggbug/232057.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/linjuddpk/" target="_blank">川流不息</a> 2008-10-02 03:07 <a href="http://www.blogjava.net/linjuddpk/archive/2008/10/02/232057.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java 访问 ACCESS DATE字段</title><link>http://www.blogjava.net/linjuddpk/archive/2008/09/22/230371.html</link><dc:creator>川流不息</dc:creator><author>川流不息</author><pubDate>Mon, 22 Sep 2008 03:07:00 GMT</pubDate><guid>http://www.blogjava.net/linjuddpk/archive/2008/09/22/230371.html</guid><wfw:comment>http://www.blogjava.net/linjuddpk/comments/230371.html</wfw:comment><comments>http://www.blogjava.net/linjuddpk/archive/2008/09/22/230371.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/linjuddpk/comments/commentRss/230371.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/linjuddpk/services/trackbacks/230371.html</trackback:ping><description><![CDATA[最近在做一个小数据库程序，数据库选用ACCESS。<br />
在ACCESS中建表 feeDetail<br />
&nbsp;<br />
<table cellspacing="2" cellpadding="2" width="500" border="0">
    <tbody>
        <tr>
            <td>字段&nbsp;&nbsp;</td>
            <td>描述</td>
        </tr>
        <tr>
            <td>ID</td>
            <td></td>
        </tr>
        <tr>
            <td><font style="background-color: #bdc1ea">fee<br />
            </font></td>
            <td></td>
        </tr>
        <tr>
            <td><font style="background-color: #bdc1ea">description<br />
            </font></td>
            <td></td>
        </tr>
        <tr>
            <td><font style="background-color: #bdc1ea">type<br />
            </font></td>
            <td></td>
        </tr>
        <tr>
            <td>date</td>
            <td>记录插入日期</td>
        </tr>
    </tbody>
</table>
<br />
程序中SQL 语句：<font style="background-color: #bdc1ea">insert into DailyFee(fee,description,type,date) values (?,?,?,?);</font><br />
运行却总是提示语法错误，很奇怪，找不出原因。<br />
在网上狂搜一下，才发现原来ACCESS不允许 采用关键字DATE作为字段名，修改字段名，运行，成功。
<img src ="http://www.blogjava.net/linjuddpk/aggbug/230371.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/linjuddpk/" target="_blank">川流不息</a> 2008-09-22 11:07 <a href="http://www.blogjava.net/linjuddpk/archive/2008/09/22/230371.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>TableCellRenderer &amp; TableCellEditor 区别（转载）</title><link>http://www.blogjava.net/linjuddpk/archive/2008/07/25/217599.html</link><dc:creator>川流不息</dc:creator><author>川流不息</author><pubDate>Fri, 25 Jul 2008 15:56:00 GMT</pubDate><guid>http://www.blogjava.net/linjuddpk/archive/2008/07/25/217599.html</guid><wfw:comment>http://www.blogjava.net/linjuddpk/comments/217599.html</wfw:comment><comments>http://www.blogjava.net/linjuddpk/archive/2008/07/25/217599.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/linjuddpk/comments/commentRss/217599.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/linjuddpk/services/trackbacks/217599.html</trackback:ping><description><![CDATA[<span id="ctl00_MainContentPlaceholder_ctl01_ctl00_lblEntry">&nbsp;简单来说：
<p><span style="color: red">TableCellRenderer就是用来绘制展示当前cell单元数值内容的，你可以用文字、数值或者图片来表示内容，当然最强大展示方式的就是通过自定义自己的renderer组件，通过Java2D来绘制各种天花乱坠的效果。</span></p>
<p><br />
<span style="color: red">TableCellEditor主要是用来当用户点击在具体cell时进行编辑的组件，所以TableCellEditor除了具有TableCellRenderer一样的绘制功能外还可以进行交互动作，例如在cell上出现下拉框、勾选框甚至通过按钮弹出更复杂的对话框让用户进行输入编辑。</span></p>
<p><br />
以下是在cell中嵌入start、stop两个按钮的表格，注意这里的renderer只是用来显示效果，并没有进行交互动作，真正进行动作的是当你将鼠标点击在cell上时，JTable定位上去的editor，所以不要徒劳在renderer上做点击事项处理，renderer是不会接受到交互事项的，renderer只是个画笔，你看到的start、stop按钮只是这个画笔画出来的内容，是虚的并没有真正的组件在上面。</p>
<p><br />
import java.awt.*;<br />
import java.awt.event.*;<br />
import javax.swing.*;<br />
import javax.swing.table.*;<br />
public class TableTest1 extends JFrame {<br />
&nbsp;JTable table;<br />
&nbsp;String[] states = new String[]{"stop", "stop", "stop"};<br />
&nbsp;<br />
&nbsp;// model<br />
&nbsp;class TableModel extends AbstractTableModel{<br />
&nbsp; public int getColumnCount() {<br />
&nbsp;&nbsp; return 2;<br />
&nbsp; }<br />
&nbsp; public int getRowCount() {<br />
&nbsp;&nbsp; return states.length;<br />
&nbsp; }<br />
&nbsp; public Object getValueAt(int rowIndex, int columnIndex) {<br />
&nbsp;&nbsp; if(columnIndex == 0){<br />
&nbsp;&nbsp;&nbsp; return states[rowIndex];<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; return null;<br />
&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp; public String getColumnName(int columnIndex) {<br />
&nbsp;&nbsp; if(columnIndex == 0){<br />
&nbsp;&nbsp;&nbsp; return "state";<br />
&nbsp;&nbsp; }else{<br />
&nbsp;&nbsp;&nbsp; return "operate";<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp; public boolean isCellEditable(int rowIndex, int columnIndex) {<br />
&nbsp;&nbsp; if(columnIndex == 0){<br />
&nbsp;&nbsp;&nbsp; return false;<br />
&nbsp;&nbsp; }else{<br />
&nbsp;&nbsp;&nbsp; return true;<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;}<br />
&nbsp;<br />
&nbsp;// cell editor<br />
&nbsp;class Editor extends AbstractCellEditor implements TableCellEditor, ActionListener {<br />
&nbsp; int row;<br />
&nbsp; JTable table;<br />
&nbsp; JPanel panel;<br />
&nbsp; JButton start;<br />
&nbsp; JButton stop;<br />
&nbsp; Editor(){<br />
&nbsp;&nbsp; panel = new JPanel();<br />
&nbsp;&nbsp; panel.setLayout(new GridLayout(1, 2));<br />
&nbsp;&nbsp; start = new JButton("start");<br />
&nbsp;&nbsp; stop = new JButton("stop");<br />
&nbsp;&nbsp; start.addActionListener(this);<br />
&nbsp;&nbsp; stop.addActionListener(this);<br />
&nbsp;&nbsp; panel.add(start);<br />
&nbsp;&nbsp; panel.add(stop);<br />
&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp; public Object getCellEditorValue() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return null;<br />
&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp; public Component getTableCellEditorComponent(JTable table,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Object value,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boolean isSelected,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int row,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int column) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.table = table;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.row = row;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return panel;<br />
&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp; public void actionPerformed(ActionEvent e) {<br />
&nbsp;&nbsp; if(e.getSource() == start){<br />
&nbsp;&nbsp;&nbsp; states[row] = "start";<br />
&nbsp;&nbsp; }else{<br />
&nbsp;&nbsp;&nbsp; states[row] = "stop";<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; ((AbstractTableModel)table.getModel()).fireTableCellUpdated(row, 0);<br />
&nbsp; }<br />
&nbsp; <br />
&nbsp;}<br />
&nbsp;<br />
&nbsp;// cell render<br />
&nbsp;class Renderer extends JComponent implements TableCellRenderer{<br />
&nbsp; JPanel panel;<br />
&nbsp; JButton start;<br />
&nbsp; JButton stop;<br />
&nbsp; Renderer(){<br />
&nbsp;&nbsp; panel = new JPanel();<br />
&nbsp;&nbsp; panel.setLayout(new GridLayout(1, 2));<br />
&nbsp;&nbsp; start = new JButton("start");<br />
&nbsp;&nbsp; stop = new JButton("stop");<br />
&nbsp;&nbsp; panel.add(start);<br />
&nbsp;&nbsp; panel.add(stop);<br />
&nbsp; }<br />
&nbsp; public Component getTableCellRendererComponent(JTable table, Object value, <br />
&nbsp;&nbsp;&nbsp; boolean isSelected, boolean hasFocus, int row, int column) {<br />
&nbsp;&nbsp; return panel;<br />
&nbsp; }<br />
&nbsp;}<br />
&nbsp;<br />
&nbsp;public TableTest1(){<br />
&nbsp; super("renderer and editor self-existent");<br />
&nbsp; table = new JTable(new TableModel());<br />
&nbsp; TableColumn tableColumn = table.getColumnModel().getColumn(1);<br />
&nbsp; tableColumn.setCellRenderer(new Renderer());<br />
&nbsp; tableColumn.setCellEditor(new Editor());<br />
&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.getContentPane().setLayout(new BorderLayout());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.getContentPane().add(new JScrollPane(table), BorderLayout.CENTER);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.setSize(500, 300);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);<br />
&nbsp;}<br />
&nbsp;public static void main(String[] args) {<br />
&nbsp; new TableTest1().show();<br />
&nbsp;}<br />
}<br />
</p>
</span>
<img src ="http://www.blogjava.net/linjuddpk/aggbug/217599.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/linjuddpk/" target="_blank">川流不息</a> 2008-07-25 23:56 <a href="http://www.blogjava.net/linjuddpk/archive/2008/07/25/217599.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>