Java Notes

Border Example

Example -- A Titled, Etched, Empty Border around a Panel

Problem: Create a panel with 10 pixels of space around it, then an etched line with a title at the top left.

To do this, we need to create the etched border, then create a titled border from that. Then we put the titled border (which includes the etched border) together with the empty border to form a compound border. Then this compound border is added to the panel. Here are some ways to do this.

Solution 1 - Inline code

You need to create the borders and combine them. You could add the border in one massive statement, but here it's broken down for simplicity.
import javax.swing.border.*;
. . .
JPanel processPanel = new JPanel();
Border etchedBdr = BorderFactory.createEtchedBorder();
Border titledBdr = BorderFactory.createTitledBorder(etchedBdr, "Process");
Border emptyBdr  = BorderFactory.createEmptyBorder(10,10,10,10);
Border compoundBdr=BorderFactory.createCompoundBorder(titledBdr, emptyBdr);
processPanel.setBorder(compoundBdr);

Solution 2 - Utility method

It's common to use the same style of border on several panels. Write a utility method to do this, and save the method in your collection of handy methods.
  1. There will be a consistent border style.
  2. Changes will be made consistently.
  3. The initial extra writing is repaid with only two calls.
This example creates the same border as above.
import javax.swing.border.*;
. . .
// We can do this because the same border object can be reused.
    static final Border empty10Border = BorderFactory.createEmptyBorder(10,10,10,10);
    static final Border etchedBorder  = BorderFactory.createEtchedBorder();
. . .
public static Border myTitledBorder(String title) {
    return BorderFactory.createCompoundBorder(
               BorderFactory.createTitledBorder(etchedBorder, title), 
               empty10Border);
}//end myTitledBorder
. . .
    JPanel processPanel = new JPanel();
    processPanel.setBorder(myTitledBorder("Process"));