<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7996187</id><updated>2012-01-27T09:45:11.164-08:00</updated><title type='text'>Java tidbits</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://javatidbits.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://javatidbits.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Girish</name><uri>http://www.blogger.com/profile/06511369763973586739</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp3.blogger.com/_WTC3LEED-OU/R4V8atQWswI/AAAAAAAAByg/-1i3HubFUWY/S220/megoodboy.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>21</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7996187.post-4998619218343287042</id><published>2009-08-17T11:00:00.000-07:00</published><updated>2009-08-17T11:04:28.109-07:00</updated><title type='text'>jarsigner error: java.lang.NegativeArraySizeException</title><content type='html'>This error occurs when there is a problem with the keystore file.  Regenerate the keystore file to fix it. The problem in my case was that my keystore was checked into CVS as a ascii text file which corrupted it. I regenerated the keystore and checked it in as binary to fix it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7996187-4998619218343287042?l=javatidbits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javatidbits.blogspot.com/feeds/4998619218343287042/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7996187&amp;postID=4998619218343287042' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default/4998619218343287042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default/4998619218343287042'/><link rel='alternate' type='text/html' href='http://javatidbits.blogspot.com/2009/08/jarsigner-error-javalangnegativearraysi.html' title='jarsigner error: java.lang.NegativeArraySizeException'/><author><name>Girish</name><uri>http://www.blogger.com/profile/06511369763973586739</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp3.blogger.com/_WTC3LEED-OU/R4V8atQWswI/AAAAAAAAByg/-1i3HubFUWY/S220/megoodboy.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7996187.post-5794385121257453580</id><published>2009-02-06T08:45:00.000-08:00</published><updated>2009-02-06T08:58:21.719-08:00</updated><title type='text'>GridbagLayout anchor ignored</title><content type='html'>&lt;dl&gt;&lt;dt&gt;I banged my head at this all morning... I hope you dont have to go through this so posting it here.&lt;br /&gt;&lt;/dt&gt;&lt;/dl&gt;The problem is that in some cases the GridBagConstraints.anchor setting is ignored and I couldnt quite figure out why. Until I read this in the javadocs :&lt;br /&gt;&lt;dl&gt;&lt;dt&gt; &lt;strong&gt;&lt;code&gt;&lt;/code&gt;&lt;/strong&gt;&lt;/dt&gt;&lt;blockquote style="font-family: courier new;"&gt;&lt;dt&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;code&gt;weightx&lt;/code&gt;&lt;/strong&gt;,      &lt;strong&gt;&lt;code&gt;weighty&lt;/code&gt;&lt;/strong&gt;&lt;/span&gt; &lt;/dt&gt;&lt;dd&gt;&lt;span style="font-size:85%;"&gt; Specifying weights is an art       that can have a significant impact      on the appearance of the components a &lt;code&gt;GridBagLayout&lt;/code&gt; controls.      Weights are used to determine how to distribute space      among columns       (&lt;code&gt;weightx&lt;/code&gt;)      and among rows      (&lt;code&gt;weighty&lt;/code&gt;);      this is important for specifying resizing behavior.      &lt;/span&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;      &lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;Unless you specify at least one non-zero value      for &lt;/span&gt;&lt;code style="font-weight: bold; color: rgb(204, 0, 0);"&gt;weightx&lt;/code&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;      or &lt;/span&gt;&lt;code style="font-weight: bold; color: rgb(204, 0, 0);"&gt;weighty&lt;/code&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;,      all the components clump together in the center of      their container.&lt;/span&gt;      This is because when the weight is 0.0 (the default),      the &lt;code&gt;GridBagLayout&lt;/code&gt; puts any extra space       between its grid of cells and the edges of the container. &lt;/span&gt;&lt;/p&gt;&lt;/dd&gt;&lt;/blockquote&gt;&lt;dt&gt;&lt;blockquote&gt;&lt;/blockquote&gt;Now if you do not specify weight params, the anchor setting seems to be ignored completely. I dont know why. Also I have noticed in some other cases that the anchor works despite the weight params not being set. In those cases the ipad constraints were set. So it could be that setting ipad also works.&lt;br /&gt;&lt;/dt&gt;&lt;dd&gt;&lt;p&gt;     &lt;/p&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7996187-5794385121257453580?l=javatidbits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javatidbits.blogspot.com/feeds/5794385121257453580/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7996187&amp;postID=5794385121257453580' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default/5794385121257453580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default/5794385121257453580'/><link rel='alternate' type='text/html' href='http://javatidbits.blogspot.com/2009/02/gridbaglayout-anchor-ignored.html' title='GridbagLayout anchor ignored'/><author><name>Girish</name><uri>http://www.blogger.com/profile/06511369763973586739</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp3.blogger.com/_WTC3LEED-OU/R4V8atQWswI/AAAAAAAAByg/-1i3HubFUWY/S220/megoodboy.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7996187.post-1015560567457492208</id><published>2007-12-20T21:12:00.001-08:00</published><updated>2007-12-21T07:08:24.183-08:00</updated><title type='text'>Eclipse RCP, add new wizard to the workbench File menu and toolbar at the root level</title><content type='html'>Here is how you add your wizard as an option under the File &gt; New menu, and toolbar drop down button.&lt;br /&gt;&lt;br /&gt;If you were like me, you should have been easily be able to add a new wizard, but when you added it to the file menu, it added your wizard under the Others... category.&lt;br /&gt;&lt;br /&gt;Here is how you get it at the root level, i.e. the same level as the new File and Folder wizards.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 1: &lt;/span&gt;Add the newWizards extension and your new wizard under it.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 2:&lt;/span&gt; Add the perspectivesExtensions extension and a newWizardShortcut extension under it.&lt;br /&gt;&lt;br /&gt;Here is how the plugin.xml looks:&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;&amp;lt;plugin&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;extension id="application" point="org.eclipse.core.runtime.applications"&amp;gt;&lt;br /&gt;     &amp;lt;application&amp;gt;&lt;br /&gt;    &amp;lt;run class="edu.pitt.dbmi.odie.Application"&amp;gt;&lt;br /&gt;    &amp;lt;/run&amp;gt;&lt;br /&gt;      &amp;lt;/application&amp;gt;&lt;br /&gt; &amp;lt;/extension&amp;gt;&lt;br /&gt; &amp;lt;extension point="org.eclipse.ui.perspectives"&amp;gt;&lt;br /&gt;&amp;lt;perspective name="RCP Perspective" class="edu.pitt.dbmi.odie.Perspective" id="edu.pitt.dbmi.odie.perspective"&amp;gt;&lt;br /&gt;      &amp;lt;/perspective&amp;gt;&lt;br /&gt; &amp;lt;/extension&amp;gt;&lt;br /&gt; &amp;lt;extension point="org.eclipse.ui.newWizards"&amp;gt;&lt;br /&gt;      &amp;lt;wizard class="edu.pitt.dbmi.odie.NewDocumentCollectionWizard"&lt;br /&gt;       id="edu.pitt.dbmi.odie.NewDocumentCollectionWizard"&lt;br /&gt;       name="Document Collection"&amp;gt;&lt;br /&gt;      &amp;lt;/wizard&amp;gt;&lt;br /&gt; &amp;lt;/extension&amp;gt;&lt;br /&gt; &amp;lt;extension point="org.eclipse.ui.perspectiveExtensions"&amp;gt;&lt;br /&gt;      &amp;lt;perspectiveExtension targetID="edu.pitt.dbmi.odie.perspective"&amp;gt;&lt;br /&gt;           &amp;lt;newWizardShortcut id="edu.pitt.dbmi.odie.NewDocumentCollectionWizard"&amp;gt;&lt;br /&gt;           &amp;lt;/newWizardShortcut&amp;gt;&lt;br /&gt;      &amp;lt;/perspectiveExtension&amp;gt;&lt;br /&gt; &amp;lt;/extension&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/plugin&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Step 3:&lt;/span&gt; create the actions and add it to the menu and toolbar.&lt;br /&gt;You can edit the ApplicationActionBarAdvisor.java. You will need to override the makeActions, fillMenuBar and fillCoolBar methods.&lt;br /&gt;&lt;br /&gt;Here are how they look:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;IWorkbenchAction quitAction;&lt;br /&gt;  private IWorkbenchAction newWizardDropDownAction;&lt;br /&gt;  private IContributionItem newWizardMenu;&lt;br /&gt;  public ApplicationActionBarAdvisor(IActionBarConfigurer configurer) {&lt;br /&gt;      super(configurer);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  protected void makeActions(IWorkbenchWindow window) {&lt;br /&gt;      newWizardDropDownAction = ActionFactory.NEW_WIZARD_DROP_DOWN.create(window);&lt;br /&gt;      register(newWizardDropDownAction);&lt;br /&gt;   &lt;br /&gt;      newWizardMenu = ContributionItemFactory.NEW_WIZARD_SHORTLIST.create(window);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  protected void fillMenuBar(IMenuManager menuBar) {&lt;br /&gt;   &lt;br /&gt;&lt;br /&gt;       MenuManager menu = new MenuManager("File", IWorkbenchActionConstants.M_FILE);&lt;br /&gt;&lt;br /&gt;       {&lt;br /&gt;           // create the New submenu, using the same id for it as the New action&lt;br /&gt;           MenuManager newMenu = new MenuManager("New", "new");&lt;br /&gt;           newMenu.add(this.newWizardMenu);&lt;br /&gt;           menu.add(newMenu);&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;       menuBar.add(menu);&lt;br /&gt;   &lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  @Override&lt;br /&gt;  protected void fillCoolBar(ICoolBarManager coolBar) {&lt;br /&gt;       ToolBarManager toolbar = new ToolBarManager(SWT.FLAT);&lt;br /&gt;       toolbar.add(newWizardDropDownAction);&lt;br /&gt;   &lt;br /&gt;       coolBar.add(toolbar);&lt;br /&gt;  }&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Note, Step 2 can also be done in code. Just add this line to the createInitialLayout method of your perspective&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;    public void createInitialLayout(IPageLayout layout) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;          layout.addNewWizardShortcut("edu.pitt.dbmi.odie.NewDocumentCollectionWizard");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: georgia;font-size:100%;" &gt;&lt;span style="font-weight: bold;"&gt;IMPORTANT: &lt;/span&gt;Donot forget to clear workspace data to see your changes.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7996187-1015560567457492208?l=javatidbits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javatidbits.blogspot.com/feeds/1015560567457492208/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7996187&amp;postID=1015560567457492208' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default/1015560567457492208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default/1015560567457492208'/><link rel='alternate' type='text/html' href='http://javatidbits.blogspot.com/2007/12/here-is-how-you-add-your-wizard-as.html' title='Eclipse RCP, add new wizard to the workbench File menu and toolbar at the root level'/><author><name>Girish</name><uri>http://www.blogger.com/profile/06511369763973586739</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp3.blogger.com/_WTC3LEED-OU/R4V8atQWswI/AAAAAAAAByg/-1i3HubFUWY/S220/megoodboy.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7996187.post-113743778987997092</id><published>2006-01-16T10:55:00.000-08:00</published><updated>2006-01-16T10:56:29.890-08:00</updated><title type='text'>How to detect changes in a JTextField</title><content type='html'>textField.getDocument().addDocumentListener(new DocumentListener(){&lt;br /&gt;&lt;br /&gt;            public void changedUpdate(DocumentEvent arg0) {&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;           &lt;br /&gt;            public void insertUpdate(DocumentEvent arg0) {&lt;br /&gt;               &lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            public void removeUpdate(DocumentEvent arg0) {&lt;br /&gt;            }&lt;br /&gt;           &lt;br /&gt;        });&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7996187-113743778987997092?l=javatidbits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javatidbits.blogspot.com/feeds/113743778987997092/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7996187&amp;postID=113743778987997092' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default/113743778987997092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default/113743778987997092'/><link rel='alternate' type='text/html' href='http://javatidbits.blogspot.com/2006/01/how-to-detect-changes-in-jtextfield.html' title='How to detect changes in a JTextField'/><author><name>Girish</name><uri>http://www.blogger.com/profile/06511369763973586739</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp3.blogger.com/_WTC3LEED-OU/R4V8atQWswI/AAAAAAAAByg/-1i3HubFUWY/S220/megoodboy.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7996187.post-110978552326634468</id><published>2005-03-02T09:41:00.000-08:00</published><updated>2005-03-02T09:45:23.266-08:00</updated><title type='text'>Calculating execution time of a block of code</title><content type='html'>org.apache.xindice.Stopwatch has a nice stopwatch&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7996187-110978552326634468?l=javatidbits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javatidbits.blogspot.com/feeds/110978552326634468/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7996187&amp;postID=110978552326634468' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default/110978552326634468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default/110978552326634468'/><link rel='alternate' type='text/html' href='http://javatidbits.blogspot.com/2005/03/calculating-execution-time-of-block-of.html' title='Calculating execution time of a block of code'/><author><name>Girish</name><uri>http://www.blogger.com/profile/06511369763973586739</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp3.blogger.com/_WTC3LEED-OU/R4V8atQWswI/AAAAAAAAByg/-1i3HubFUWY/S220/megoodboy.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7996187.post-110616257279374745</id><published>2005-01-19T11:21:00.000-08:00</published><updated>2005-01-19T11:22:52.793-08:00</updated><title type='text'>convert String to InputStream</title><content type='html'>&lt;span style="font-family: verdana; color: rgb(102, 102, 102);font-size:78%;" &gt;byte[] bytes = str.getBytes();&lt;br /&gt;&lt;br /&gt;ByteArrayInputStream bais = new ByteArrayInputStream(bytes);&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7996187-110616257279374745?l=javatidbits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javatidbits.blogspot.com/feeds/110616257279374745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7996187&amp;postID=110616257279374745' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default/110616257279374745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default/110616257279374745'/><link rel='alternate' type='text/html' href='http://javatidbits.blogspot.com/2005/01/convert-string-to-inputstream.html' title='convert String to InputStream'/><author><name>Girish</name><uri>http://www.blogger.com/profile/06511369763973586739</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp3.blogger.com/_WTC3LEED-OU/R4V8atQWswI/AAAAAAAAByg/-1i3HubFUWY/S220/megoodboy.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7996187.post-110564193872146554</id><published>2005-01-13T10:40:00.001-08:00</published><updated>2006-07-13T09:24:35.803-07:00</updated><title type='text'>How to have a page start from the top of the browser window, and  occupy entire height of the browser</title><content type='html'>Using XTHML and CSS:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family: verdana;"&gt;html, body {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;     height: 100%;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;     margin: 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;     padding: 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;    table {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;     height: 100%;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;     width: 100%;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;     background-color: #CCC;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;    }&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7996187-110564193872146554?l=javatidbits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javatidbits.blogspot.com/feeds/110564193872146554/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7996187&amp;postID=110564193872146554' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default/110564193872146554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default/110564193872146554'/><link rel='alternate' type='text/html' href='http://javatidbits.blogspot.com/2005/01/how-to-have-page-start-from-top-of_13.html' title='How to have a page start from the top of the browser window, and  occupy entire height of the browser'/><author><name>Girish</name><uri>http://www.blogger.com/profile/06511369763973586739</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp3.blogger.com/_WTC3LEED-OU/R4V8atQWswI/AAAAAAAAByg/-1i3HubFUWY/S220/megoodboy.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7996187.post-110564145009406294</id><published>2005-01-13T10:34:00.000-08:00</published><updated>2005-01-13T10:37:30.093-08:00</updated><title type='text'>avoid JDialog from being hidden when user switches to another application window</title><content type='html'>Common frustration with Java. Your child dialogs seem to disappear if you switch to another application window and come back.  The only way to switch to the dialog box seems to be thru the task switching function ( Alt+Tab )&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Actually, that only happens when you pass null to the constructor of JDialog.  If you pass the parent frame's reference to the JDialog constructor, the jdialog is automatically made visibile when the user returns to your application.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7996187-110564145009406294?l=javatidbits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javatidbits.blogspot.com/feeds/110564145009406294/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7996187&amp;postID=110564145009406294' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default/110564145009406294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default/110564145009406294'/><link rel='alternate' type='text/html' href='http://javatidbits.blogspot.com/2005/01/avoid-jdialog-from-being-hidden-when.html' title='avoid JDialog from being hidden when user switches to another application window'/><author><name>Girish</name><uri>http://www.blogger.com/profile/06511369763973586739</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp3.blogger.com/_WTC3LEED-OU/R4V8atQWswI/AAAAAAAAByg/-1i3HubFUWY/S220/megoodboy.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7996187.post-110546940734266294</id><published>2005-01-11T10:45:00.000-08:00</published><updated>2005-01-11T10:50:07.343-08:00</updated><title type='text'>Setting cursor for entire application</title><content type='html'>The secret is that you have to change the cursor on theoriginating component AND on its frame!Here's a little code snippet (part of a static utility class) that does the job :&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;color:#666666;"&gt;public class Util {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;color:#666666;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;color:#666666;"&gt;public static void doWaitCursor (Component component) { &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;color:#666666;"&gt;  setCursor(Cursor.WAIT_CURSOR, component); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;color:#666666;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;color:#666666;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;color:#666666;"&gt;public static void noWaitCursor (Component component) { &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;color:#666666;"&gt;  setCursor(Cursor.DEFAULT_CURSOR, component); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;color:#666666;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;color:#666666;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;color:#666666;"&gt;public static void setCursor (int cursor, Component component) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;color:#666666;"&gt;  component.setCursor(Cursor.getPredefinedCursor(cursor));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;color:#666666;"&gt;  Frame frame = getFrame(component);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;color:#666666;"&gt;  if (frame != null) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;color:#666666;"&gt;    frame.setCursor(Cursor.getPredefinedCursor(cursor));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;color:#666666;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;color:#666666;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;color:#666666;"&gt;public static Frame getFrame (Component c) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;color:#666666;"&gt;  if (c instanceof Frame) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;color:#666666;"&gt;    return (Frame) c;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;color:#666666;"&gt;  while ((c = c.getParent()) != null) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;color:#666666;"&gt;    if (c instanceof Frame) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;color:#666666;"&gt;      return (Frame) c;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;color:#666666;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;color:#666666;"&gt;  return null;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;color:#666666;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;color:#666666;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:78%;color:#666666;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:78%;"&gt;&lt;span style="color:#999999;"&gt;&lt;strong&gt;Source: &lt;/strong&gt;&lt;/span&gt;&lt;a href="http://forum.java.sun.com/thread.jspa?threadID=111793&amp;messageID=296338"&gt;&lt;span style="color:#999999;"&gt;http://forum.java.sun.com/thread.jspa?threadID=111793&amp;amp;messageID=296338&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7996187-110546940734266294?l=javatidbits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javatidbits.blogspot.com/feeds/110546940734266294/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7996187&amp;postID=110546940734266294' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default/110546940734266294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default/110546940734266294'/><link rel='alternate' type='text/html' href='http://javatidbits.blogspot.com/2005/01/setting-cursor-for-entire-application.html' title='Setting cursor for entire application'/><author><name>Girish</name><uri>http://www.blogger.com/profile/06511369763973586739</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp3.blogger.com/_WTC3LEED-OU/R4V8atQWswI/AAAAAAAAByg/-1i3HubFUWY/S220/megoodboy.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7996187.post-110314117678380467</id><published>2004-12-15T13:05:00.000-08:00</published><updated>2004-12-15T12:30:50.896-08:00</updated><title type='text'>Sending and receiving objects over an HTTP connection</title><content type='html'>&lt;span style="font-family:verdana;font-size:78%;color:#000000;"&gt;public static Object sendObject(Object obj) {&lt;br /&gt;URLConnection conn = null;&lt;br /&gt;Object reply = null;&lt;br /&gt;try {&lt;br /&gt;// open URL connection&lt;br /&gt;conn = servletURL.openConnection();&lt;br /&gt;conn.setDoInput(true);&lt;br /&gt;conn.setDoOutput(true);&lt;br /&gt;conn.setUseCaches( false );&lt;br /&gt;// send object&lt;br /&gt;ObjectOutputStream objOut = new ObjectOutputStream(&lt;br /&gt;conn.getOutputStream() );&lt;br /&gt;objOut.writeObject( obj );&lt;br /&gt;objOut.flush();&lt;br /&gt;objOut.close();&lt;br /&gt;} catch ( IOException ex ) {&lt;br /&gt;ex.printStackTrace();&lt;br /&gt;return null;&lt;br /&gt;}&lt;br /&gt;// recieve reply&lt;br /&gt;try{&lt;br /&gt;ObjectInputStream objIn = new ObjectInputStream(&lt;br /&gt;conn.getInputStream() );&lt;br /&gt;reply = objIn.readObject();&lt;br /&gt;objIn.close();&lt;br /&gt;} catch ( Exception ex ) {&lt;br /&gt;// it is ok if we get an exception here&lt;br /&gt;// that means that there is no object being returned&lt;br /&gt;if( !(ex instanceof EOFException))&lt;br /&gt;ex.printStackTrace();&lt;br /&gt;//System.err.println("*");&lt;br /&gt;}&lt;br /&gt;return reply;&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:78%;"&gt;&lt;span style="color:#ff0000;"&gt;ref:&lt;/span&gt; &lt;span style="color:#999999;"&gt;edu.upmc.opi.caBIG.caTIES.client.vr.utils.ncimetasearch.NCIMetaSearchComponent&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;On the servlet side :&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;color:#000000;"&gt;ObjectInputStream objIn = new ObjectInputStream(req.getInputStream());        try {            Object obj = objIn.readObject();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:78%;color:#ff0000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:78%;"&gt;&lt;span style="color:#ff0000;"&gt;ref:&lt;/span&gt; &lt;span style="color:#666666;"&gt;edu.upmc.opi.caBIG.caTIES.server.mmtx.MMTxService&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Verdana;font-size:78%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7996187-110314117678380467?l=javatidbits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javatidbits.blogspot.com/feeds/110314117678380467/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7996187&amp;postID=110314117678380467' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default/110314117678380467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default/110314117678380467'/><link rel='alternate' type='text/html' href='http://javatidbits.blogspot.com/2004/12/sending-and-receiving-objects-over.html' title='Sending and receiving objects over an HTTP connection'/><author><name>Girish</name><uri>http://www.blogger.com/profile/06511369763973586739</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp3.blogger.com/_WTC3LEED-OU/R4V8atQWswI/AAAAAAAAByg/-1i3HubFUWY/S220/megoodboy.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7996187.post-109949636102883885</id><published>2004-11-03T07:37:00.000-08:00</published><updated>2004-11-03T07:39:21.026-08:00</updated><title type='text'>handling xml from string</title><content type='html'>u need jaxp.jar for this.&lt;br /&gt;&lt;br /&gt;DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();&lt;br /&gt;DocumentBuilder builder = factory.newDocumentBuilder();&lt;br /&gt;          &lt;br /&gt;Document xmldoc = builder.parse(new ByteArrayInputStream(xml.getBytes()));&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7996187-109949636102883885?l=javatidbits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javatidbits.blogspot.com/feeds/109949636102883885/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7996187&amp;postID=109949636102883885' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default/109949636102883885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default/109949636102883885'/><link rel='alternate' type='text/html' href='http://javatidbits.blogspot.com/2004/11/handling-xml-from-string.html' title='handling xml from string'/><author><name>Girish</name><uri>http://www.blogger.com/profile/06511369763973586739</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp3.blogger.com/_WTC3LEED-OU/R4V8atQWswI/AAAAAAAAByg/-1i3HubFUWY/S220/megoodboy.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7996187.post-109934119686318583</id><published>2004-11-01T13:14:00.000-08:00</published><updated>2004-11-01T12:33:16.863-08:00</updated><title type='text'>Signing your jar files</title><content type='html'>This is required when you want to deploy your application using webstart.&lt;br /&gt;&lt;br /&gt;First step is to have a keystore. The following page describes how to create a self certified keystore.&lt;br /&gt;&lt;br /&gt;http://mindprod.com/jgloss/keytool.html&lt;br /&gt;&lt;br /&gt;--then you have to use the jarsigner tool&lt;br /&gt;&lt;br /&gt;jarsigner -keystore &lt;location&gt;  targetFile.jar  alias&lt;br /&gt;&lt;br /&gt;See the mindprod page for full details&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7996187-109934119686318583?l=javatidbits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javatidbits.blogspot.com/feeds/109934119686318583/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7996187&amp;postID=109934119686318583' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default/109934119686318583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default/109934119686318583'/><link rel='alternate' type='text/html' href='http://javatidbits.blogspot.com/2004/11/signing-your-jar-files.html' title='Signing your jar files'/><author><name>Girish</name><uri>http://www.blogger.com/profile/06511369763973586739</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp3.blogger.com/_WTC3LEED-OU/R4V8atQWswI/AAAAAAAAByg/-1i3HubFUWY/S220/megoodboy.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7996187.post-109698569893956798</id><published>2004-10-05T07:08:00.000-07:00</published><updated>2004-10-05T07:14:58.940-07:00</updated><title type='text'>Of files and filepaths in Java</title><content type='html'>This is a major stumbling block for me every time.  As I learn new methods I will keep updating .&lt;br /&gt;&lt;br /&gt;For now here is the simplest :&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;color:#666666;"&gt;FileReader f = new FileReader("tmp.txt");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now where the hell do u place tmp.txt, you might ask. Well, to find where Java tries to look for tmp.txt,  do this&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;color:#666666;"&gt;System.out.println(System.getProperty("user.dir");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To open a file relative to the class file location is something that would really help. And it is supposed to work by using class.getClassLoader().getResourceAsStream(), but it didnt work for me, will post as soon as I know how it works.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7996187-109698569893956798?l=javatidbits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javatidbits.blogspot.com/feeds/109698569893956798/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7996187&amp;postID=109698569893956798' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default/109698569893956798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default/109698569893956798'/><link rel='alternate' type='text/html' href='http://javatidbits.blogspot.com/2004/10/of-files-and-filepaths-in-java.html' title='Of files and filepaths in Java'/><author><name>Girish</name><uri>http://www.blogger.com/profile/06511369763973586739</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp3.blogger.com/_WTC3LEED-OU/R4V8atQWswI/AAAAAAAAByg/-1i3HubFUWY/S220/megoodboy.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7996187.post-109658065242892307</id><published>2004-09-30T14:35:00.000-07:00</published><updated>2004-09-30T14:44:12.430-07:00</updated><title type='text'>Changing name of Popup menu item based on a variable</title><content type='html'>The name of the menu item in the popup menu depends on the NAME attribute of AbstractAction of that menu item.&lt;br /&gt;&lt;br /&gt;When you add  some subclass of AbstractAction to the JPopupMenu, you can specify any name to be displayed in the menu by calling super.putValue(NAME, "yourname");&lt;br /&gt;&lt;br /&gt;Shown below is an implementation of AbstractAction that does it in the constructor.&lt;br /&gt;&lt;span style="color:#666666;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;font-size:78%;color:#666666;"&gt;public class AddAction extends AbstractAction {&lt;br /&gt;&lt;br /&gt;            public AddAction(int type)&lt;br /&gt;            {&lt;br /&gt;                super("Add");&lt;br /&gt;&lt;br /&gt;                this.type = type;&lt;br /&gt;               &lt;br /&gt;                if(type == 0)&lt;br /&gt;                    super.putValue(NAME,"Type 0");&lt;br /&gt;                else&lt;br /&gt;                    super.putValue(NAME,"Type 1");&lt;br /&gt;                }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;font-size:100%;"&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;and add it to the popup menu as follows&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;JPopupMenu popup = new JPopupMenu();&lt;br /&gt;&lt;br /&gt;popup.add(new AddAction(0));&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;font-size:78%;color:#666666;"&gt;popup.add(new AddAction(1));&lt;br /&gt;&lt;span style="font-family:georgia;font-size:100%;"&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;here I have added 2 menu items using the same Action but with different names. YOu can ofcourse take different actions based on which menu item is clicked by checking the type in AddAction.&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;font-size:78%;color:#666666;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7996187-109658065242892307?l=javatidbits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javatidbits.blogspot.com/feeds/109658065242892307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7996187&amp;postID=109658065242892307' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default/109658065242892307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default/109658065242892307'/><link rel='alternate' type='text/html' href='http://javatidbits.blogspot.com/2004/09/changing-name-of-popup-menu-item-based.html' title='Changing name of Popup menu item based on a variable'/><author><name>Girish</name><uri>http://www.blogger.com/profile/06511369763973586739</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp3.blogger.com/_WTC3LEED-OU/R4V8atQWswI/AAAAAAAAByg/-1i3HubFUWY/S220/megoodboy.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7996187.post-109638037081669949</id><published>2004-09-28T06:58:00.000-07:00</published><updated>2004-09-28T07:44:16.200-07:00</updated><title type='text'>Make a Swing component not take up all the space</title><content type='html'>Most common frustration when designing with Layouts is that your nice pretty layout gets all screwed up because the container panel blows up to take up all the space. Even if you try a setPreferred or setMaximumSize , it seems to have no effect.&lt;br /&gt;&lt;br /&gt;A common trick I do to avoid that is to use a wrapperPanel with its layout manager as BorderLayout. and I dump the container panel in the NORTH area of the wrapperPanel.&lt;br /&gt;How BorderLayout works is that, it allocates components in the border's their preferred sizes, and all the rest of the space is filled up by CENTER. So now by adding it to NORTH, the container panel's preferred sizes come in to play, and all left over space is gobbled up by CENTER.&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;When you have a similar problem with the other components, like buttons, text boxes etc, I prefer to use GridbagLayout which automatically assigns the space equivalent to the components preferred sizes. and using GridBagConstraints you can use insets and margins, to your hearts content to layout the components perfectly. Once you understand it , GridBagLayout kicks ass.&lt;br /&gt;&lt;br /&gt;With JTree's or I think anything that is within a JScrollPane, adjusting the preferred size of the inner component doesnt have any effect. Adjust the preferred size of the scrollpane to achieve the desired effect.&lt;br /&gt;&lt;br /&gt;See &lt;i&gt;Swing, Second Edition  by Matthew Robinson, Pavel Vorobiev, &lt;/i&gt;published by Manning for a good explanation of GridBagLayout.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7996187-109638037081669949?l=javatidbits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javatidbits.blogspot.com/feeds/109638037081669949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7996187&amp;postID=109638037081669949' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default/109638037081669949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default/109638037081669949'/><link rel='alternate' type='text/html' href='http://javatidbits.blogspot.com/2004/09/make-swing-component-not-take-up-all.html' title='Make a Swing component not take up all the space'/><author><name>Girish</name><uri>http://www.blogger.com/profile/06511369763973586739</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp3.blogger.com/_WTC3LEED-OU/R4V8atQWswI/AAAAAAAAByg/-1i3HubFUWY/S220/megoodboy.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7996187.post-109406055310013480</id><published>2004-09-01T10:38:00.000-07:00</published><updated>2004-09-01T10:45:50.213-07:00</updated><title type='text'>Accessing a file relative to the class file location</title><content type='html'>&lt;span style=";font-family:verdana;font-size:78%;"&gt;&lt;span style="font-family:arial;"&gt;BufferedReader bufferedreader =&lt;br /&gt;  new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("filename.txt")));&lt;/span&gt;&lt;br /&gt;---------------------&lt;br /&gt;&lt;span style=";font-family:georgia;font-size:100%;"&gt;Here filename.txt is assumed to exist in the same directory as the class file.&lt;br /&gt;---------------&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);font-family:verdana;font-size:78%;"&gt;&lt;span style="color: rgb(255, 102, 102);"&gt;gate &lt;/span&gt;:&lt;span style="color: rgb(204, 204, 204);"&gt; edu.upmc.oip.utils.client.dialog.NCIMetaTreeViewerDialog&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7996187-109406055310013480?l=javatidbits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javatidbits.blogspot.com/feeds/109406055310013480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7996187&amp;postID=109406055310013480' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default/109406055310013480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default/109406055310013480'/><link rel='alternate' type='text/html' href='http://javatidbits.blogspot.com/2004/09/accessing-file-relative-to-class-file.html' title='Accessing a file relative to the class file location'/><author><name>Girish</name><uri>http://www.blogger.com/profile/06511369763973586739</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp3.blogger.com/_WTC3LEED-OU/R4V8atQWswI/AAAAAAAAByg/-1i3HubFUWY/S220/megoodboy.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7996187.post-109328786615371551</id><published>2004-08-23T12:03:00.000-07:00</published><updated>2004-08-23T12:04:26.153-07:00</updated><title type='text'>super() in Java</title><content type='html'>Dude,&lt;br /&gt;&lt;br /&gt;super() has to be the first line in any function you use it in.  Period. End of Discussion.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7996187-109328786615371551?l=javatidbits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javatidbits.blogspot.com/feeds/109328786615371551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7996187&amp;postID=109328786615371551' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default/109328786615371551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default/109328786615371551'/><link rel='alternate' type='text/html' href='http://javatidbits.blogspot.com/2004/08/super-in-java.html' title='super() in Java'/><author><name>Girish</name><uri>http://www.blogger.com/profile/06511369763973586739</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp3.blogger.com/_WTC3LEED-OU/R4V8atQWswI/AAAAAAAAByg/-1i3HubFUWY/S220/megoodboy.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7996187.post-109285706410878958</id><published>2004-08-18T12:19:00.000-07:00</published><updated>2004-08-18T12:24:24.120-07:00</updated><title type='text'>Tokenize strings, the StringTokenizer</title><content type='html'>&lt;span style="font-family:verdana;font-size:78%;"&gt;&lt;span style="font-family:georgia;font-size:100%;"&gt;Notice the different techniques to use tokenizer. StringTokenizer is self - explanatory,&lt;br /&gt;RETokenizer tokenizes on regexs. The one in the example, treats and, AND, or and OR as&lt;br /&gt;delims and also returns the delims as tokens. StringTokenizer  doesnot return delims.&lt;/span&gt;&lt;br /&gt;----------------------------------------------------------------------------------&lt;br /&gt;String text;&lt;br /&gt;StringTokenizer st = new StringTokenizer(text,",");&lt;br /&gt;-----------&lt;br /&gt;Iterator t = new RETokenizer(s,"\\s(and|AND|or|OR)\\s", returnDelims);&lt;br /&gt; while(t.hasNext())&lt;br /&gt;{&lt;br /&gt;       String cs = (String)t.next();&lt;br /&gt;           &lt;br /&gt;        if(!(cs.equalsIgnoreCase(" and ") || cs.equalsIgnoreCase(" or ")))&lt;br /&gt;                conditionList.add(cs);&lt;br /&gt;}&lt;br /&gt;----------------------------------------------------------------------------------&lt;br /&gt;&lt;span style="color:#cccccc;"&gt;&lt;span style="color:#ff6666;"&gt;ProtocolQuery &lt;/span&gt;: edu.upmc.database.SQLStatement&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7996187-109285706410878958?l=javatidbits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javatidbits.blogspot.com/feeds/109285706410878958/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7996187&amp;postID=109285706410878958' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default/109285706410878958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default/109285706410878958'/><link rel='alternate' type='text/html' href='http://javatidbits.blogspot.com/2004/08/tokenize-strings-stringtokenizer.html' title='Tokenize strings, the StringTokenizer'/><author><name>Girish</name><uri>http://www.blogger.com/profile/06511369763973586739</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp3.blogger.com/_WTC3LEED-OU/R4V8atQWswI/AAAAAAAAByg/-1i3HubFUWY/S220/megoodboy.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7996187.post-109285389208156049</id><published>2004-08-18T11:24:00.000-07:00</published><updated>2004-08-19T09:34:09.230-07:00</updated><title type='text'>Server Side includes when your server doesnot support it</title><content type='html'>This works only with HTML. A typical use will be to place some piece of html code at the top of every page on the website, used when you have a menu bar on each page. A big pain is to modify the menu, because you have to go to each and every page and do the changes to make it uniform.&lt;br /&gt;&lt;br /&gt;Ofcourse there are other solutions like using frames so that now there is only 1 file to modify.&lt;br /&gt;&lt;br /&gt;But what if you dont want to use frames.... Javascript to the rescue.&lt;br /&gt;&lt;br /&gt;Use Javascript document.write method to write out the html code to your page. Place this javascript code in a something.js file and include something.js in every page where you want to have that html code present.&lt;br /&gt;&lt;br /&gt;Including for javascript is as simple as&lt;br /&gt;&amp;lt;script language="javascript" src="something.js"&amp;gt;&lt;br /&gt;&lt;br /&gt;I typically write 2 functions in this file, namely  writeHeader() and writeFooter(). At the exact location where I want the code to be written I call this function&lt;br /&gt;&lt;br /&gt;Example :&lt;br /&gt;&lt;pre id="line18"&gt;&lt;&lt;span class="start-tag"&gt;body&lt;/span&gt;&lt;span class="attribute-name"&gt; class&lt;/span&gt;=&lt;span class="attribute-value"&gt;"main" &lt;/span&gt;&lt;span class="attribute-name"&gt;onload&lt;/span&gt;=&lt;span class="attribute-value"&gt;"MM_preloadImages('images/mmenuhomeon.gif','images/mmenuabouton.gif','images/mmenueventson.gif','images/mmenugovernon.gif','images/mmenubbon.gif','images/mmenulinkson.gif','images/mmenucontactoff.gif')"&lt;/span&gt;&gt;&lt;br /&gt;&lt;span style="color:#339999;"&gt;&lt;&lt;span class="start-tag"&gt;script&lt;/span&gt;&lt;span class="attribute-name"&gt; type&lt;/span&gt;=&lt;span class="attribute-value"&gt;"text/javascript"&lt;/span&gt;&gt;writeHeader()&lt;/&lt;span class="end-tag"&gt;script&lt;/span&gt;&gt;&lt;/span&gt;&lt;br /&gt;		 &lt;br /&gt;&lt;&lt;span class="start-tag"&gt;table&lt;/span&gt;&lt;span class="attribute-name"&gt; width&lt;/span&gt;=&lt;span class="attribute-value"&gt;"100%" &lt;/span&gt;&lt;span class="attribute-name"&gt;cellspacing&lt;/span&gt;=&lt;span class="attribute-value"&gt;"0" &lt;/span&gt;&lt;span class="attribute-name"&gt;cellpadding&lt;/span&gt;=&lt;span class="attribute-value"&gt;"0"&lt;/span&gt;&gt;&lt;br /&gt; &lt;&lt;span class="start-tag"&gt;tr&lt;/span&gt;&gt;&lt;br /&gt;...&lt;br /&gt;...&lt;br /&gt;-----------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7996187-109285389208156049?l=javatidbits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javatidbits.blogspot.com/feeds/109285389208156049/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7996187&amp;postID=109285389208156049' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default/109285389208156049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default/109285389208156049'/><link rel='alternate' type='text/html' href='http://javatidbits.blogspot.com/2004/08/server-side-includes-when-your-server.html' title='Server Side includes when your server doesnot support it'/><author><name>Girish</name><uri>http://www.blogger.com/profile/06511369763973586739</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp3.blogger.com/_WTC3LEED-OU/R4V8atQWswI/AAAAAAAAByg/-1i3HubFUWY/S220/megoodboy.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7996187.post-109285343865077714</id><published>2004-08-18T11:17:00.000-07:00</published><updated>2004-08-18T11:57:51.876-07:00</updated><title type='text'>Of ActionListeners and Popup menus</title><content type='html'>An example of how to use ActionListeners.&lt;br /&gt;-------------------------------------------&lt;br /&gt;&lt;span style=";font-family:verdana;font-size:78%;"&gt;&lt;br /&gt;class LoadAction extends AbstractAction {&lt;br /&gt;   LoadAction(){&lt;br /&gt;     super("Load"); //this is the menu item name in a popup&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   public void actionPerformed(ActionEvent e){&lt;br /&gt;//do what you want to here&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;---------------&lt;br /&gt;JPopupMenu popup = new JPopupMenu();&lt;br /&gt;popup.add(new LoadAction());&lt;br /&gt;---------------&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"&gt;You can also call the Action explicitly by&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;new LoadAction().actionPerformed(null);&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:georgia;"&gt;-----&lt;br /&gt;&lt;br /&gt;If you need access to members of the parent class pass them to the LoadAction constructor. when you create it.&lt;br /&gt;--------&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;a href="file:///C:/Program%20Files/eclipse/workspace/gate/bin/edu/upmc/opi/spin/client/SpinDataStoreTreeViewer.class"&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:78%;color:#cccccc;"&gt;edu.upmc.opi.spin.client.SpinDataStoreTreeViewer&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:78%;"&gt;&lt;br /&gt;&lt;br /&gt; &lt;/span&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7996187-109285343865077714?l=javatidbits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javatidbits.blogspot.com/feeds/109285343865077714/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7996187&amp;postID=109285343865077714' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default/109285343865077714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default/109285343865077714'/><link rel='alternate' type='text/html' href='http://javatidbits.blogspot.com/2004/08/of-actionlisteners-and-popup-menus.html' title='Of ActionListeners and Popup menus'/><author><name>Girish</name><uri>http://www.blogger.com/profile/06511369763973586739</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp3.blogger.com/_WTC3LEED-OU/R4V8atQWswI/AAAAAAAAByg/-1i3HubFUWY/S220/megoodboy.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7996187.post-109285306242814740</id><published>2004-08-18T11:15:00.000-07:00</published><updated>2004-08-18T11:17:42.426-07:00</updated><title type='text'>About this blog</title><content type='html'>Hi wanderer,&lt;br /&gt;&lt;br /&gt;This blog wasnt created for your viewing pleasure. It just contains some random ideas and code snippets that I come across when I am at work. I need a place to store these so that I can get back to them when I need them. So if some posts dont make sense to you at all... well... they weren't meant to.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7996187-109285306242814740?l=javatidbits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javatidbits.blogspot.com/feeds/109285306242814740/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7996187&amp;postID=109285306242814740' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default/109285306242814740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7996187/posts/default/109285306242814740'/><link rel='alternate' type='text/html' href='http://javatidbits.blogspot.com/2004/08/about-this-blog.html' title='About this blog'/><author><name>Girish</name><uri>http://www.blogger.com/profile/06511369763973586739</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp3.blogger.com/_WTC3LEED-OU/R4V8atQWswI/AAAAAAAAByg/-1i3HubFUWY/S220/megoodboy.png'/></author><thr:total>0</thr:total></entry></feed>
