Java Tips Weblog

Recent Updates

Posted by Darryl Burke on December 29, 2008

Thanks for the various comments. We’ll try to keep you updated here when changes are made to the code so you can get a new copy.

If you are interested in receiving an RRS feed whenever this posting is updated click on the “Read the rest of this entry” link below for more information on how to do this.

November 1, 2009 – Screen Image
  • added better support for creating images on non displayed components
  • fixed the API by removing the writeImage() code from the createImage() methods.
October 20, 2009 – Moving Windows
  • fixed a flickering problem when used in Linux as described by Allen in the first comment
October 18 6, 2009 – Card Layout Actions
  • implemented the suggestion made by Andre in the first comment

Read the rest of this entry »

Posted in Uncategorized | 13 Comments »

ToolTips and ScrollPanes

Posted by Rob Camick on November 8, 2009

Tooltips are generated by mouse movement over different Swing components. In a complex component, like a JTable, the tooltip is continually updated as the mouse moves from cell to cell. But what happens when the table is in a scrollpane and the viewport is moved? In this case the mouse may now be hovering over a different cell, but the tooltip is not updated. This may, or may not, be a problem depending on your requirements.
Read the rest of this entry »

Posted in Classes, Swing | Leave a Comment »

Text Field Auto Tab

Posted by Rob Camick on October 25, 2009

Anybody who has ever written a DocumentFilter has probably seen the DocumentSizeFilter example from the Swing tutorial on “Implementing a DocumentFilter”. It is simple, straight forward and works well. However, wouldn’t it be nice to have some additional functionality, namely the ability for auto tabbing when the Document is full?
Read the rest of this entry »

Posted in Classes, Swing | 5 Comments »

Chaining Document Filters

Posted by Rob Camick on October 18, 2009

A previous entry on Text Validation briefly mentions why you should consider using DocumentFilters. A limitation of a DocumentFilter is that you can only add a single filter to the Document. There may be times when you need to filter on multiple conditions. Of course you can always create a new filter and combine the code for multiple filter conditions. However, an easier approach would be to reuse existing filters. That is, it would be nice to be able to chain multiple filters together to act as a single filter.
Read the rest of this entry »

Posted in Classes, Swing | Leave a Comment »

Component Border

Posted by Rob Camick on September 27, 2009

There are many times when you want a JTextField and a JButton to work together. That is you provide the user with a text field for entering data and you provide a button to display a popup component to make it easier to enter the data. An example might be a date field. Some users might choose to type the date directly into the text field, while others might choose the point and click approach. There are a couple of common appoaches for achieving this and one not so common approach that I will suggest.
Read the rest of this entry »

Posted in Classes, Swing | 5 Comments »

Resizing Components

Posted by Rob Camick on September 13, 2009

A recent entry on Moving Windows discussed how you might add functionality to move a component or a non decorated window. Today we will look at adding resizing functionality to these same components.
Read the rest of this entry »

Posted in Awt, Classes, Swing | Leave a Comment »

Global Event Dispatching

Posted by Rob Camick on September 6, 2009

As a user interacts with a GUI, by using the mouse or keyboard, Swing handles the interaction by dispatching events to the appropriate component for processing. In turn the component will notify any listeners that the event has been received and processed. There may be times when you want to intercept or alter the event before it is dispatched to the component. Swing provides a few different approaches that will allow you to control the dispatching of events.
Read the rest of this entry »

Posted in Awt, Swing, Tips | Leave a Comment »

Global Event Listeners

Posted by Rob Camick on August 30, 2009

Listeners are used to listen for specific events on a given component. This makes it easy to listen for a MouseEvent on a text component for example. With this approach you need to add a separate listener to the component for every event you want to listen for. However there may be times when you want to listen for events at a more global level. That is, you may want to listen for events:

  • of multiple types on a specific component – in this case you would need to create multiple listeners to add to the component.
  • of a single type on all components – in this case you would need to create a single listener and then recursively add it to all components.

Wouldn’t it be nice if the above requirements could be handled by a single listener?
Read the rest of this entry »

Posted in Awt, Swing, Tips | 8 Comments »

Disabled Panel

Posted by Rob Camick on August 2, 2009

A previous entry discussed a DisabledGlassPane which allows you to disable key and mouse events for an entire frame. There may be times when you need to disable key and mouse events for a given Container only. Unfortunately you can’t just invoke setEnabled(false) on the container to disable the contained components. So we need another approach.
Read the rest of this entry »

Posted in Classes, Swing | 2 Comments »

Overlap Layout

Posted by Rob Camick on July 26, 2009

All the layout managers, that I’m aware of, position components in a separate area of a container. This makes sense as you generally don’t want components to overlap one another. However, there may situations, in a card game for example, where it is reasonable to have components overlapping one another. I haven’t played with the ZOrder support that was added in JDK5, but I figured this might be a way to support overlapping components.
Read the rest of this entry »

Posted in Awt, Classes | Leave a Comment »

Table Button Column

Posted by Rob Camick on July 12, 2009

A JTable is used to disply rows of data. There may be times when you want to do some processing on a row of data. Maybe you want to display a popup form with more details or maybe you simply want to delete a row. In these cases it may be desireable to add a button to one of the table columns so you can invoke this processing. The problem is that JTable doesn’t support a button renderer or editor.
Read the rest of this entry »

Posted in Classes, Swing | 7 Comments »