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 »
Archive for the ‘Package’ Category
Text Field Auto Tab
Posted by Rob Camick on October 25, 2009
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 | 4 Comments »
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.
Posted in Classes, Swing | 18 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 | 24 Comments »
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 | 1 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 | 13 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 | 6 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.
Posted in Awt, Classes | 24 Comments »
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.
Posted in Classes, Swing | 149 Comments »
HSL Color
Posted by Rob Camick on July 5, 2009
The Color class in Java uses Red, Green and Blue (RGB) values to specify a Color. I don’t know about you, but I have no idea how to manipulate a given Color to return a related Color. For example, how would you go about returning a darker or lighter Color? Sure the Color API supports brighter() and darker() methods, but they don’t seem to work that well and you can’t control the degree of brightness or darkness. The API also supports a HSB (Hue, Saturation, Brightness) color space which seemed promising, but didn’t quite return the results I was looking for.
Posted in Awt, Classes | 23 Comments »