import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;

        // Show a range of different Borders around JPanels.
class SwingBorderFrame extends JFrame {
    public SwingBorderFrame() {
        final int width = 400, height = 320;
        setSize(width,height);
        Container contents = getContentPane();

        JPanel labelPanel = new JPanel();
        setupBorders(labelPanel);
        contents.add(labelPanel,"Center");
        contents.add(new QuitJPanel(),"South");
    }

        // Add panels to the display with various borders.
        // Each panel contains a descriptive label.
    protected void setupBorders(Container display){
        // Shared font and size.
        final Font f = new Font("SansSerif",Font.BOLD,12);
        final int width = 110;
        final Dimension size = new Dimension(width,width);
        // A thickness for the LineBorder.
        final int lineThickness = 5;

        // Label and Border pairs for each panel.
        Object[][] borders = {
            {"Bevel-Raised",
             new BevelBorder(BevelBorder.RAISED,Color.cyan,Color.blue)
            },
            {"Etched-Raised", new EtchedBorder(EtchedBorder.RAISED)
            },
            {"Line ("+lineThickness+")",
             new LineBorder(Color.black,lineThickness)
            },
            {"Soft-Bevel",
             new TitledBorder(
                    new SoftBevelBorder(SoftBevelBorder.LOWERED),"Titled")
            },
            {"Matte", new MatteBorder(new CircleIcon(5))
            },
        };

        // Create a bordered panel containing a descriptive label.
        final int numBorders = borders.length;
        for(int i = 0; i < numBorders; i++){
            JPanel panel = new JPanel();
            JLabel label = new JLabel((String) borders[i][0]);
            panel.setBorder((Border) borders[i][1]);
            label.setFont(f);
            panel.setPreferredSize(size);
            panel.add(label);
            display.add(panel);
        }
    }
}
