Java/Swing JFC/Border

Материал из Java эксперт
Перейти к: навигация, поиск

Adding a Title to a Border

   <source lang="java">
  

import javax.swing.BorderFactory; import javax.swing.border.TitledBorder; public class Main {

 public static void main(String[] argv) {
   TitledBorder titledBorder = BorderFactory.createTitledBorder("Title");
 }

}


 </source>
   
  
 
  



An example of the MatteBorder class

   <source lang="java">
  

import java.awt.Color; import java.awt.GridLayout; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.border.MatteBorder; public class MatteExample extends JPanel {

 public MatteExample() {
   super(true);
   this.setLayout(new GridLayout(1, 2, 5, 5));
   JLabel label1 = new JLabel("Matte Border");
   JLabel label2 = new JLabel("Matte Border (Icon)");
   label1.setHorizontalAlignment(JLabel.CENTER);
   label2.setHorizontalAlignment(JLabel.CENTER);
   Icon icon = new ImageIcon("yourFile.gif");
   MatteBorder matte = new MatteBorder(35, 35, 35, 35, Color.blue);
   MatteBorder matteicon = new MatteBorder(35, 35, 35, 35, icon);
   label1.setBorder(matte);
   label2.setBorder(matteicon);
   add(label1);
   add(label2);
 }
 public static void main(String s[]) {
   JFrame frame = new JFrame("Matte Borders");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   frame.setSize(500, 200);
   frame.setContentPane(new MatteExample());
   frame.setVisible(true);
 }

}



 </source>
   
  
 
  



An example of using a titled border on a label

   <source lang="java">
  

import java.awt.GridLayout; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.border.TitledBorder; public class TitledExample extends JPanel {

 public TitledExample() {
   super(true);
   this.setLayout(new GridLayout(1, 1, 5, 5));
   JLabel label = new JLabel("Titled Border");
   label.setHorizontalAlignment(JLabel.CENTER);
   TitledBorder titled = new TitledBorder("Title");
   label.setBorder(titled);
   add(label);
 }
 public static void main(String s[]) {
   JFrame frame = new JFrame("Borders");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   frame.setSize(200, 100);
   frame.setContentPane(new TitledExample());
   frame.setVisible(true);
 }

}



 </source>
   
  
 
  



Another TitledBorder 1

   <source lang="java">
  

import java.awt.Color; import java.awt.Container; import java.awt.Font; import java.awt.GridLayout; import javax.swing.BorderFactory; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.border.Border; import javax.swing.border.MatteBorder; import javax.swing.border.TitledBorder; public class ATitledBorder {

 public static void main(String args[]) {
   JFrame frame = new JFrame("Titled Borders");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   Border thisBorder = BorderFactory.createTitledBorder("Easy");
   Icon thatIcon = new ImageIcon("diamond.gif");
   Border thatBorder1 = new MatteBorder(18, 20, 18, 20, thatIcon);
   Border thatBorder2 = new TitledBorder(thatBorder1, "Harder");
   Font font = new Font("Serif", Font.ITALIC, 12);
   Border thatBorder = new TitledBorder(thatBorder2, "Harder",
       TitledBorder.LEFT, TitledBorder.ABOVE_BOTTOM, font, Color.red);
   JButton thisButton = new JButton("Easy");
   thisButton.setBorder(thisBorder);
   JButton thatButton = new JButton("Harder");
   thatButton.setBorder(thatBorder);
   Container contentPane = frame.getContentPane();
   contentPane.setLayout(new GridLayout(1, 2));
   contentPane.add(thisButton);
   contentPane.add(thatButton);
   frame.setSize(300, 200);
   frame.setVisible(true);
 }

}



 </source>
   
  
 
  



A simple demonstration of the LineBorder class built with rounded corners

   <source lang="java">
  

import java.awt.BorderLayout; import java.awt.Color; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.border.LineBorder; public class RoundedLineBorder extends JPanel {

 public RoundedLineBorder() {
   super(true);
   setLayout(new BorderLayout());
   JLabel label = new JLabel("Rounded Corners");
   label.setHorizontalAlignment(JLabel.CENTER);
   LineBorder line = new LineBorder(Color.blue, 2, true);
   label.setBorder(line);
   add(label, BorderLayout.CENTER);
 }
 public static void main(String s[]) {
   JFrame frame = new JFrame("Rounded Line Border");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   frame.setSize(500, 200);
   frame.setContentPane(new RoundedLineBorder());
   frame.setVisible(true);
 }

}



 </source>
   
  
 
  



BevelBorder

   <source lang="java">
  

/* Definitive Guide to Swing for Java 2, Second Edition By John Zukowski ISBN: 1-893115-78-X Publisher: APress

  • /

import java.awt.Color; import java.awt.ruponent; import java.awt.Container; import java.awt.Font; import java.awt.Graphics; import java.awt.GridLayout; import java.awt.Polygon; import javax.swing.Icon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.border.BevelBorder; import javax.swing.border.Border; import javax.swing.border.rupoundBorder; import javax.swing.border.EmptyBorder; import javax.swing.border.EtchedBorder; import javax.swing.border.LineBorder; import javax.swing.border.MatteBorder; import javax.swing.border.SoftBevelBorder; import javax.swing.border.TitledBorder; public class BorderSample {

 public static void main(String args[]) {
   JFrame frame = new JFrame("Sample Borders");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   Border bevelBorder = new BevelBorder(BevelBorder.RAISED, Color.red,
       Color.red.darker(), Color.pink, Color.pink.brighter());
   Border emptyBorder = new EmptyBorder(5, 10, 5, 10);
   Border etchedBorder = new EtchedBorder(EtchedBorder.RAISED, Color.red,
       Color.pink);
   Border lineBorder = new LineBorder(Color.red, 5);
   Icon diamondIcon = new DiamondIcon(Color.red);
   Border matteBorder = new MatteBorder(5, 10, 5, 10, diamondIcon);
   Border softBevelBorder = new SoftBevelBorder(BevelBorder.RAISED,
       Color.red, Color.red.darker(), Color.pink, Color.pink
           .brighter());
   Font font = new Font("Serif", Font.ITALIC, 12);
   Border titledBorder = new TitledBorder(lineBorder, "Hello",
       TitledBorder.LEFT, TitledBorder.BELOW_BOTTOM, font, Color.red);
   Border compoundBorder = new CompoundBorder(lineBorder, matteBorder);
   JLabel bevelLabel = new JLabel("Bevel");
   bevelLabel.setBorder(bevelBorder);
   bevelLabel.setHorizontalAlignment(JLabel.CENTER);
   JLabel emptyLabel = new JLabel("Empty");
   emptyLabel.setBorder(emptyBorder);
   emptyLabel.setHorizontalAlignment(JLabel.CENTER);
   JLabel etchedLabel = new JLabel("Etched");
   etchedLabel.setBorder(etchedBorder);
   etchedLabel.setHorizontalAlignment(JLabel.CENTER);
   JLabel lineLabel = new JLabel("Line");
   lineLabel.setBorder(lineBorder);
   lineLabel.setHorizontalAlignment(JLabel.CENTER);
   JLabel matteLabel = new JLabel("Matte");
   matteLabel.setBorder(matteBorder);
   matteLabel.setHorizontalAlignment(JLabel.CENTER);
   JLabel softBevelLabel = new JLabel("Soft Bevel");
   softBevelLabel.setBorder(softBevelBorder);
   softBevelLabel.setHorizontalAlignment(JLabel.CENTER);
   JLabel titledLabel = new JLabel("Titled");
   titledLabel.setBorder(titledBorder);
   titledLabel.setHorizontalAlignment(JLabel.CENTER);
   JLabel compoundLabel = new JLabel("Compound");
   compoundLabel.setBorder(compoundBorder);
   compoundLabel.setHorizontalAlignment(JLabel.CENTER);
   Container contentPane = frame.getContentPane();
   contentPane.setLayout(new GridLayout(2, 4, 5, 5));
   contentPane.add(bevelLabel);
   contentPane.add(emptyLabel);
   contentPane.add(etchedLabel);
   contentPane.add(lineLabel);
   contentPane.add(matteLabel);
   contentPane.add(softBevelLabel);
   contentPane.add(titledLabel);
   contentPane.add(compoundLabel);
   frame.setSize(400, 200);
   frame.setVisible(true);
 }

} class DiamondIcon implements Icon {

 private Color color;
 private boolean selected;
 private int width;
 private int height;
 private Polygon poly;
 private static final int DEFAULT_WIDTH = 10;
 private static final int DEFAULT_HEIGHT = 10;
 public DiamondIcon(Color color) {
   this(color, true, DEFAULT_WIDTH, DEFAULT_HEIGHT);
 }
 public DiamondIcon(Color color, boolean selected) {
   this(color, selected, DEFAULT_WIDTH, DEFAULT_HEIGHT);
 }
 public DiamondIcon(Color color, boolean selected, int width, int height) {
   this.color = color;
   this.selected = selected;
   this.width = width;
   this.height = height;
   initPolygon();
 }
 private void initPolygon() {
   poly = new Polygon();
   int halfWidth = width / 2;
   int halfHeight = height / 2;
   poly.addPoint(0, halfHeight);
   poly.addPoint(halfWidth, 0);
   poly.addPoint(width, halfHeight);
   poly.addPoint(halfWidth, height);
 }
 public int getIconHeight() {
   return height;
 }
 public int getIconWidth() {
   return width;
 }
 public void paintIcon(Component c, Graphics g, int x, int y) {
   g.setColor(color);
   g.translate(x, y);
   if (selected) {
     g.fillPolygon(poly);
   } else {
     g.drawPolygon(poly);
   }
   g.translate(-x, -y);
 }

}



 </source>
   
  
 
  



BevelBorder 2

   <source lang="java">
  

import java.awt.Color; import java.awt.Container; import java.awt.GridLayout; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.border.BevelBorder; import javax.swing.border.Border;

public class ABevelBorder {

 public static void main(String args[]) {
   JFrame frame = new JFrame("Bevel Borders");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   Border raisedBorder = BorderFactory.createRaisedBevelBorder();
   Border loweredBorder = BorderFactory.createLoweredBevelBorder();
   Border myRaisedBorder =  BorderFactory.createBevelBorder(BevelBorder.RAISED, Color.pink, Color.red);
   Border myLoweredBorder = BorderFactory.createBevelBorder(BevelBorder.LOWERED, Color.pink, Color.red);
   JButton raisedButton = new JButton("Raised");
   raisedButton.setBorder(raisedBorder);
   JButton loweredButton = new JButton("Lowered");
   loweredButton.setBorder(loweredBorder);
   JButton myRaisedButton = new JButton("My Raised");
   myRaisedButton.setBorder(myRaisedBorder);
   JButton myLoweredButton = new JButton("My Lowered");
   myLoweredButton.setBorder(myLoweredBorder);
   Container contentPane = frame.getContentPane();
   contentPane.setLayout(new GridLayout(2, 2, 5, 5));
   contentPane.add(raisedButton);
   contentPane.add(loweredButton);
   contentPane.add(myRaisedButton);
   contentPane.add(myLoweredButton);
   frame.setSize(300, 100);
   frame.setVisible(true);
 }

}



 </source>
   
  
 
  



Border Demo

   <source lang="java">
  

/* From http://java.sun.ru/docs/books/tutorial/index.html */ /*

* Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* -Redistribution of source code must retain the above copyright notice, this
*  list of conditions and the following disclaimer.
*
* -Redistribution in binary form must reproduce the above copyright notice,
*  this list of conditions and the following disclaimer in the documentation
*  and/or other materials provided with the distribution.
*
* Neither the name of Sun Microsystems, Inc. or the names of contributors may
* be used to endorse or promote products derived from this software without
* specific prior written permission.
*
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING
* ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
* OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN MIDROSYSTEMS, INC. ("SUN")
* AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE
* AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS
* DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST
* REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL,
* INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY
* OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
* EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*
* You acknowledge that this software is not designed, licensed or intended
* for use in the design, construction, operation or maintenance of any
* nuclear facility.
*/

import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import java.awt.Dimension; import java.awt.GridLayout; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTabbedPane; import javax.swing.border.Border; import javax.swing.border.TitledBorder; public class BorderDemo extends JFrame {

 public BorderDemo() {
   super("BorderDemo");
   Border blackline, etched, raisedbevel, loweredbevel, empty;
   //A border that puts 10 extra pixels at the sides and
   //bottom of each pane.
   Border paneEdge = BorderFactory.createEmptyBorder(0, 10, 10, 10);
   blackline = BorderFactory.createLineBorder(Color.black);
   etched = BorderFactory.createEtchedBorder();
   raisedbevel = BorderFactory.createRaisedBevelBorder();
   loweredbevel = BorderFactory.createLoweredBevelBorder();
   empty = BorderFactory.createEmptyBorder();
   //First pane: simple borders
   JPanel simpleBorders = new JPanel();
   simpleBorders.setBorder(paneEdge);
   simpleBorders.setLayout(new BoxLayout(simpleBorders, BoxLayout.Y_AXIS));
   addCompForBorder(blackline, "line border", simpleBorders);
   addCompForBorder(etched, "etched border", simpleBorders);
   addCompForBorder(raisedbevel, "raised bevel border", simpleBorders);
   addCompForBorder(loweredbevel, "lowered bevel border", simpleBorders);
   addCompForBorder(empty, "empty border", simpleBorders);
   //Second pane: matte borders
   JPanel matteBorders = new JPanel();
   matteBorders.setBorder(paneEdge);
   matteBorders.setLayout(new BoxLayout(matteBorders, BoxLayout.Y_AXIS));
   //XXX: We *should* size the component so that the
   //XXX: icons tile OK. Without that, the icons are
   //XXX: likely to be cut off and look bad.
   ImageIcon icon = new ImageIcon("images/left.gif"); //20x22
   Border border = BorderFactory.createMatteBorder(-1, -1, -1, -1, icon);
   addCompForBorder(border, "matte border (-1,-1,-1,-1,icon)",
       matteBorders);
   border = BorderFactory.createMatteBorder(1, 5, 1, 1, Color.red);
   addCompForBorder(border, "matte border (1,5,1,1,Color.red)",
       matteBorders);
   border = BorderFactory.createMatteBorder(0, 20, 0, 0, icon);
   addCompForBorder(border, "matte border (0,20,0,0,icon)", matteBorders);
   //Third pane: titled borders
   JPanel titledBorders = new JPanel();
   titledBorders.setBorder(paneEdge);
   titledBorders.setLayout(new BoxLayout(titledBorders, BoxLayout.Y_AXIS));
   TitledBorder titled;
   titled = BorderFactory.createTitledBorder("title");
   addCompForBorder(titled, "default titled border"
       + " (default just., default pos.)", titledBorders);
   titled = BorderFactory.createTitledBorder(blackline, "title");
   addCompForTitledBorder(titled, "titled line border"
       + " (centered, default pos.)", TitledBorder.CENTER,
       TitledBorder.DEFAULT_POSITION, titledBorders);
   titled = BorderFactory.createTitledBorder(etched, "title");
   addCompForTitledBorder(titled, "titled etched border"
       + " (right just., default pos.)", TitledBorder.RIGHT,
       TitledBorder.DEFAULT_POSITION, titledBorders);
   titled = BorderFactory.createTitledBorder(loweredbevel, "title");
   addCompForTitledBorder(titled, "titled lowered bevel border"
       + " (default just., above top)",
       TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.ABOVE_TOP,
       titledBorders);
   titled = BorderFactory.createTitledBorder(empty, "title");
   addCompForTitledBorder(titled, "titled empty border"
       + " (default just., bottom)",
       TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.BOTTOM,
       titledBorders);
   //Fourth pane: compound borders
   JPanel compoundBorders = new JPanel();
   compoundBorders.setBorder(paneEdge);
   compoundBorders.setLayout(new BoxLayout(compoundBorders,
       BoxLayout.Y_AXIS));
   Border redline = BorderFactory.createLineBorder(Color.red);
   Border compound;
   compound = BorderFactory
       .createCompoundBorder(raisedbevel, loweredbevel);
   addCompForBorder(compound, "compound border (two bevels)",
       compoundBorders);
   compound = BorderFactory.createCompoundBorder(redline, compound);
   addCompForBorder(compound, "compound border (add a red outline)",
       compoundBorders);
   titled = BorderFactory.createTitledBorder(compound, "title",
       TitledBorder.CENTER, TitledBorder.BELOW_BOTTOM);
   addCompForBorder(titled, "titled compound border"
       + " (centered, below bottom)", compoundBorders);
   JTabbedPane tabbedPane = new JTabbedPane();
   tabbedPane.addTab("Simple", null, simpleBorders, null);
   tabbedPane.addTab("Matte", null, matteBorders, null);
   tabbedPane.addTab("Titled", null, titledBorders, null);
   tabbedPane.addTab("Compound", null, compoundBorders, null);
   tabbedPane.setSelectedIndex(0);
   getContentPane().add(tabbedPane, BorderLayout.CENTER);
 }
 void addCompForTitledBorder(TitledBorder border, String description,
     int justification, int position, Container container) {
   border.setTitleJustification(justification);
   border.setTitlePosition(position);
   addCompForBorder(border, description, container);
 }
 void addCompForBorder(Border border, String description, Container container) {
   JPanel comp = new JPanel(false);
   JLabel label = new JLabel(description, JLabel.CENTER);
   comp.setLayout(new GridLayout(1, 1));
   comp.add(label);
   comp.setBorder(border);
   container.add(Box.createRigidArea(new Dimension(0, 10)));
   container.add(comp);
 }
 public static void main(String[] args) {
   JFrame frame = new BorderDemo();
   frame.addWindowListener(new WindowAdapter() {
     public void windowClosing(WindowEvent e) {
       System.exit(0);
     }
   });
   frame.pack();
   frame.setVisible(true);
 }

}



 </source>
   
  
 
  



Border of all kinds

   <source lang="java">
  

import java.awt.Color; import java.awt.GridLayout; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.border.BevelBorder; import javax.swing.border.EmptyBorder; import javax.swing.border.EtchedBorder; import javax.swing.border.LineBorder; import javax.swing.border.MatteBorder; import javax.swing.border.SoftBevelBorder; import javax.swing.border.TitledBorder; public class AnotherBorderTest extends JFrame {

 public AnotherBorderTest() {
   setTitle("Border Test");
   setSize(450, 450);
   JPanel content = (JPanel) getContentPane();
   content.setLayout(new GridLayout(6, 2,3,3));
   JPanel p = new JPanel();
   p.setBorder(new BevelBorder(BevelBorder.RAISED));
   p.add(new JLabel("RAISED BevelBorder"));
   content.add(p);
   p = new JPanel();
   p.setBorder(new BevelBorder(BevelBorder.LOWERED));
   p.add(new JLabel("LOWERED BevelBorder"));
   content.add(p);
   p = new JPanel();
   p.setBorder(new LineBorder(Color.black, 5));
   p.add(new JLabel("Black LineBorder, thickness = 5"));
   content.add(p);
   p = new JPanel();
   p.setBorder(new EmptyBorder(10, 10, 10, 10));
   p.add(new JLabel("EmptyBorder with thickness of 10"));
   content.add(p);
   p = new JPanel();
   p.setBorder(new EtchedBorder(EtchedBorder.RAISED));
   p.add(new JLabel("RAISED EtchedBorder"));
   content.add(p);
   p = new JPanel();
   p.setBorder(new EtchedBorder(EtchedBorder.LOWERED));
   p.add(new JLabel("LOWERED EtchedBorder"));
   content.add(p);
   p = new JPanel();
   p.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
   p.add(new JLabel("RAISED SoftBevelBorder"));
   content.add(p);
   p = new JPanel();
   p.setBorder(new SoftBevelBorder(SoftBevelBorder.LOWERED));
   p.add(new JLabel("LOWERED SoftBevelBorder"));
   content.add(p);
   p = new JPanel();
   p.setBorder(new MatteBorder(new ImageIcon("BALL.GIF")));
   p.add(new JLabel("MatteBorder"));
   content.add(p);
   p = new JPanel();
   p.setBorder(new TitledBorder(new MatteBorder(
       new ImageIcon("jexpLogo.gif")), "Title String"));
   p.add(new JLabel("TitledBorder using MatteBorder"));
   content.add(p);
   p = new JPanel();
   p.setBorder(new TitledBorder(new LineBorder(Color.black, 5),
       "Title String"));
   p.add(new JLabel("TitledBorder using LineBorder"));
   content.add(p);
   p = new JPanel();
   p.setBorder(new TitledBorder(new EmptyBorder(10, 10, 10, 10),
       "Title String"));
   p.add(new JLabel("TitledBorder using EmptyBorder"));
   content.add(p);
   setVisible(true);
 }
 public static void main(String args[]) {
   new AnotherBorderTest();
 }

}



 </source>
   
  
 
  



Borders with a BevelBorder used on JLabels as a highlight

   <source lang="java">
  

import java.awt.GridLayout; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.border.BevelBorder; import javax.swing.border.EmptyBorder; public class BevelExample extends JPanel {

 BevelBorder bevel;
 EmptyBorder empty;
 JLabel label[] = new JLabel[4];
 public BevelExample() {
   super(true);
   setLayout(new GridLayout(1, 4));
   bevel = new BevelBorder(BevelBorder.RAISED);
   empty = new EmptyBorder(5, 5, 5, 5);
   label[0] = new JLabel("Home");
   label[1] = new JLabel("Back");
   label[2] = new JLabel("Forward");
   label[3] = new JLabel("Stop");
   for (int i = 0; i < label.length; i++) {
     label[i].setHorizontalAlignment(JLabel.CENTER);
     label[i].addMouseListener(new RolloverListener());
     label[i].setBorder(empty);
     add(label[i]);
   }
 }
 public static void main(String s[]) {
   JFrame frame = new JFrame("Bevel Border");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   frame.setSize(400, 100);
   frame.setContentPane(new BevelExample());
   frame.setVisible(true);
 }
 // Inner class to respond to mouse events for the "rollover" effect
 class RolloverListener extends MouseAdapter {
   public void mouseEntered(MouseEvent e) {
     ((JLabel) e.getComponent()).setBorder(bevel);
     repaint();
   }
   public void mouseExited(MouseEvent e) {
     ((JLabel) e.getComponent()).setBorder(empty);
     repaint();
   }
   public void mouseClicked(MouseEvent e) {
     String text = ((JLabel) e.getComponent()).getText();
     System.out.println("You clicked " + text + "!");
   }
 }

}



 </source>
   
  
 
  



Bottom Border

   <source lang="java">
 

import java.awt.Color; import java.awt.ruponent; import java.awt.Graphics; import java.awt.Insets; import javax.swing.border.AbstractBorder; public class BottomBorder extends AbstractBorder {

 protected int thickness;
 protected Color lineColor;
 protected int gap;
 public BottomBorder(Color color) {
   this(color, 1, 1);
 }
 public BottomBorder(Color color, int thickness) {
   this(color, thickness, thickness);
 }
 public BottomBorder(Color color, int thickness, int gap) {
   lineColor = color;
   this.thickness = thickness;
   this.gap = gap;
 }
 public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
   Color oldColor = g.getColor();
   int i;
   g.setColor(lineColor);
   for (i = 0; i < thickness; i++) {
     g.drawLine(x, y + height - i - 1, x + width, y + height - i - 1);
   }
   g.setColor(oldColor);
 }
 public Insets getBorderInsets(Component c) {
   return new Insets(0, 0, gap, 0);
 }
 public Insets getBorderInsets(Component c, Insets insets) {
   insets.left = 0;
   insets.top = 0;
   insets.right = 0;
   insets.bottom = gap;
   return insets;
 }
 /**
  * Returns the color of the border.
  */
 public Color getLineColor() {
   return lineColor;
 }
 /**
  * Returns the thickness of the border.
  */
 public int getThickness() {
   return thickness;
 }
 /**
  * Returns whether or not the border is opaque.
  */
 public boolean isBorderOpaque() {
   return false;
 }
 public int getGap() {
   return gap;
 }

}


 </source>
   
  
 
  



Change border text Justification alignment style

   <source lang="java">
  

import java.awt.Color; import javax.swing.BorderFactory; import javax.swing.border.LineBorder; import javax.swing.border.TitledBorder; public class Main {

 public static void main(String[] argv) {
   LineBorder border = new LineBorder(Color.red);
   TitledBorder titledBorder = BorderFactory.createTitledBorder(border, "Title");
   
   // Or: DEFAULT_JUSTIFICATION, LEFT, RIGHT
   titledBorder.setTitleJustification(TitledBorder.CENTER);
 }

}


 </source>
   
  
 
  



CompoundBorder Demo

   <source lang="java">
  

import java.awt.Color; import java.awt.Container; import java.awt.GridLayout; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.border.Border; import javax.swing.border.rupoundBorder; import javax.swing.border.LineBorder; public class ACompoundBorder {

 public static void main(String args[]) {
   JFrame frame = new JFrame("Compound Borders");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   Border lineBorder = LineBorder.createBlackLineBorder();
   Border bevelBorder = BorderFactory.createRaisedBevelBorder();
   Border bevelLineBorder = new CompoundBorder(bevelBorder, lineBorder);
   JButton bevelLineButton = new JButton("Bevel Line");
   bevelLineButton.setBorder(bevelLineBorder);
   Border redBorder = BorderFactory.createLineBorder(Color.red);
   Border orangeBorder = BorderFactory.createLineBorder(Color.orange);
   Border yellowBorder = BorderFactory.createLineBorder(Color.yellow);
   Border greenBorder = BorderFactory.createLineBorder(Color.green);
   Border blueBorder = BorderFactory.createLineBorder(Color.blue);
   Border magentaBorder = BorderFactory.createLineBorder(Color.magenta);
   Border twoColorBorder = new CompoundBorder(magentaBorder, blueBorder);
   Border threeColorBorder = new CompoundBorder(twoColorBorder,
       greenBorder);
   Border fourColorBorder = new CompoundBorder(threeColorBorder,
       yellowBorder);
   Border fiveColorBorder = new CompoundBorder(fourColorBorder,
       orangeBorder);
   Border sixColorBorder = new CompoundBorder(fiveColorBorder, redBorder);
   JButton rainbowButton = new JButton("Rainbow");
   rainbowButton.setBorder(sixColorBorder);
   Container contentPane = frame.getContentPane();
   contentPane.setLayout(new GridLayout(1, 2));
   contentPane.add(bevelLineButton);
   contentPane.add(rainbowButton);
   frame.setSize(300, 100);
   frame.setVisible(true);
 }

}



 </source>
   
  
 
  



Create a title border from another border

   <source lang="java">
  

import java.awt.Color; import javax.swing.BorderFactory; import javax.swing.border.LineBorder; import javax.swing.border.TitledBorder; public class Main {

 public static void main(String[] argv) {
   LineBorder border = new LineBorder(Color.red);
   TitledBorder titledBorder = BorderFactory.createTitledBorder(border, "Title");
 }

}


 </source>
   
  
 
  



Custom Border Sample

   <source lang="java">
  

import java.awt.BorderLayout; import java.awt.ruponent; import java.awt.Container; import javax.swing.DefaultListCellRenderer; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JScrollPane; import javax.swing.ListCellRenderer; import javax.swing.border.Border; import javax.swing.border.EmptyBorder; import javax.swing.border.LineBorder; import javax.swing.border.TitledBorder; public class CustomBorderSample {

 public static void main(String args[]) {
   String labels[] = { "A", "B", "C", "D","E", "F", "G", "H","I", "J" };
   JFrame frame = new JFrame("Custom Border");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   Container contentPane = frame.getContentPane();
   JList jlist = new JList(labels);
   ListCellRenderer renderer = new FocusedTitleListCellRenderer();
   jlist.setCellRenderer(renderer);
   JScrollPane sp = new JScrollPane(jlist);
   contentPane.add(sp, BorderLayout.CENTER);
   frame.setSize(300, 200);
   frame.setVisible(true);
 }

} class FocusedTitleListCellRenderer implements ListCellRenderer {

 protected static Border noFocusBorder = new EmptyBorder(15, 1, 1, 1);
 protected static TitledBorder focusBorder = new TitledBorder(LineBorder
     .createGrayLineBorder(), "Focused");
 protected DefaultListCellRenderer defaultRenderer = new DefaultListCellRenderer();
 public String getTitle() {
   return focusBorder.getTitle();
 }
 public void setTitle(String newValue) {
   focusBorder.setTitle(newValue);
 }
 public Component getListCellRendererComponent(JList list, Object value,
     int index, boolean isSelected, boolean cellHasFocus) {
   JLabel renderer = (JLabel) defaultRenderer
       .getListCellRendererComponent(list, value, index, isSelected,
           cellHasFocus);
   renderer.setBorder(cellHasFocus ? focusBorder : noFocusBorder);
   return renderer;
 }

}



 </source>
   
  
 
  



demonstrate the custom CurvedBorder class

   <source lang="java">
  

import java.awt.Color; import java.awt.ruponent; import java.awt.Graphics; import java.awt.Insets; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JSlider; import javax.swing.border.AbstractBorder; public class CurvedExample extends JPanel {

 public CurvedExample() {
   super(true);
   JSlider mySlider = new JSlider();
   mySlider.setMajorTickSpacing(20);
   mySlider.setMinorTickSpacing(10);
   mySlider.setPaintTicks(true);
   mySlider.setPaintLabels(true);
   CurvedBorder border = new CurvedBorder(10, Color.darkGray);
   mySlider.setBorder(border);
   add(mySlider);
 }
 public static void main(String s[]) {
   JFrame frame = new JFrame("Custom Curved Border");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   frame.setSize(300, 150);
   frame.setContentPane(new CurvedExample());
   frame.setVisible(true);
 }

} class CurvedBorder extends AbstractBorder {

 private Color wallColor = Color.gray;
 private int sinkLevel = 10;
 public CurvedBorder() {
 }
 public CurvedBorder(int sinkLevel) {
   this.sinkLevel = sinkLevel;
 }
 public CurvedBorder(Color wall) {
   this.wallColor = wall;
 }
 public CurvedBorder(int sinkLevel, Color wall) {
   this.sinkLevel = sinkLevel;
   this.wallColor = wall;
 }
 public void paintBorder(Component c, Graphics g, int x, int y, int w, int h) {
   g.setColor(getWallColor());
   //  Paint a tall wall around the component
   for (int i = 0; i < sinkLevel; i++) {
     g.drawRoundRect(x + i, y + i, w - i - 1, h - i - 1, sinkLevel - i,
         sinkLevel);
     g.drawRoundRect(x + i, y + i, w - i - 1, h - i - 1, sinkLevel,
         sinkLevel - i);
     g.drawRoundRect(x + i, y, w - i - 1, h - 1, sinkLevel - i,
         sinkLevel);
     g.drawRoundRect(x, y + i, w - 1, h - i - 1, sinkLevel, sinkLevel
         - i);
   }
 }
 public Insets getBorderInsets(Component c) {
   return new Insets(sinkLevel, sinkLevel, sinkLevel, sinkLevel);
 }
 public Insets getBorderInsets(Component c, Insets i) {
   i.left = i.right = i.bottom = i.top = sinkLevel;
   return i;
 }
 public boolean isBorderOpaque() {
   return true;
 }
 public int getSinkLevel() {
   return sinkLevel;
 }
 public Color getWallColor() {
   return wallColor;
 }

}



 </source>
   
  
 
  



Different Swing borders

   <source lang="java">
  

// : c14:Borders.java // Different Swing borders. // <applet code=Borders width=500 height=300></applet> // From "Thinking in Java, 3rd ed." (c) Bruce Eckel 2002 // www.BruceEckel.ru. See copyright notice in CopyRight.txt. import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import java.awt.GridLayout; import javax.swing.JApplet; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.border.BevelBorder; import javax.swing.border.Border; import javax.swing.border.rupoundBorder; import javax.swing.border.EtchedBorder; import javax.swing.border.LineBorder; import javax.swing.border.MatteBorder; import javax.swing.border.SoftBevelBorder; import javax.swing.border.TitledBorder; public class Borders extends JApplet {

 static JPanel showBorder(Border b) {
   JPanel jp = new JPanel();
   jp.setLayout(new BorderLayout());
   String nm = b.getClass().toString();
   nm = nm.substring(nm.lastIndexOf(".") + 1);
   jp.add(new JLabel(nm, JLabel.CENTER), BorderLayout.CENTER);
   jp.setBorder(b);
   return jp;
 }
 public void init() {
   Container cp = getContentPane();
   cp.setLayout(new GridLayout(2, 4));
   cp.add(showBorder(new TitledBorder("Title")));
   cp.add(showBorder(new EtchedBorder()));
   cp.add(showBorder(new LineBorder(Color.BLUE)));
   cp.add(showBorder(new MatteBorder(5, 5, 30, 30, Color.GREEN)));
   cp.add(showBorder(new BevelBorder(BevelBorder.RAISED)));
   cp.add(showBorder(new SoftBevelBorder(BevelBorder.LOWERED)));
   cp.add(showBorder(new CompoundBorder(new EtchedBorder(),
       new LineBorder(Color.RED))));
 }
 public static void main(String[] args) {
   run(new Borders(), 500, 300);
 }
 public static void run(JApplet applet, int width, int height) {
   JFrame frame = new JFrame();
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   frame.getContentPane().add(applet);
   frame.setSize(width, height);
   applet.init();
   applet.start();
   frame.setVisible(true);
 }

} ///:~



 </source>
   
  
 
  



EmptyBorder

   <source lang="java">
  

import java.awt.BorderLayout; import java.awt.Container; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.border.Border; public class AnEmptyBorder {

 public static void main(String args[]) {
   JFrame frame = new JFrame("Empty Borders");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   Border emptyBorder = BorderFactory.createEmptyBorder(20, 20, 0, 0);
   JButton emptyButton = new JButton("With Empty");
   emptyButton.setBorder(emptyBorder);
   JButton nonemptyButton = new JButton("Without Empty");
   Container contentPane = frame.getContentPane();
   contentPane.add(emptyButton, BorderLayout.NORTH);
   contentPane.add(nonemptyButton, BorderLayout.SOUTH);
   frame.setSize(300, 100);
   frame.setVisible(true);
 }

}



 </source>
   
  
 
  



EtchedBorder

   <source lang="java">
  

import java.awt.Container; import java.awt.GridLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.border.Border; import javax.swing.border.EtchedBorder; public class AnEtchedBorder {

 public static void main(String args[]) {
   JFrame frame = new JFrame("Etched Borders");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   Border raisedBorder = new EtchedBorder(EtchedBorder.RAISED);
   Border loweredBorder = new EtchedBorder(EtchedBorder.LOWERED);
   JButton raisedButton = new JButton("Raised");
   raisedButton.setBorder(raisedBorder);
   JButton loweredButton = new JButton("Lowered");
   loweredButton.setBorder(loweredBorder);
   Container contentPane = frame.getContentPane();
   contentPane.setLayout(new GridLayout(1, 2, 5, 5));
   contentPane.add(raisedButton);
   contentPane.add(loweredButton);
   frame.setSize(300, 100);
   frame.setVisible(true);
 }

}



 </source>
   
  
 
  



Flex Border

   <source lang="java">
  

// FlexBorder // // Copyright (C) by Andrea Carboni. // This file may be distributed under the terms of the LGPL license. //

import java.awt.Color; import java.awt.ruponent; import java.awt.Graphics; import java.awt.Insets; import javax.swing.border.Border; public class FlexBorder implements Border {

 public static final int NONE        = 0;
 public static final int TOP_LINE    = 1;
 public static final int BOTTOM_LINE = 2;
 public static final int RECT        = 3;
 
 private Insets insets = new Insets(0,0,0,0);
 private Color  color  = Color.blue;
 private int    type   = RECT;
 
 //---------------------------------------------------------------------------
 public FlexBorder()
 {
 }
 
 //---------------------------------------------------------------------------
 
 public FlexBorder(Color c, int t)
 {
   color = c;
   type  = t;
 }
 //---------------------------------------------------------------------------
 public void setColor(Color c)
 {
   color = c;
 }
 
 //---------------------------------------------------------------------------
 
 public void setType(int t)
 {
   type = t;
 }
   
 //---------------------------------------------------------------------------
 //---
 //---   Border interface methods
 //---
 //---------------------------------------------------------------------------
 public void paintBorder(Component c, Graphics g, int x, int y, int width, int height)
 {
   g.setColor(color);
   
   switch(type)
   {
     case TOP_LINE:    g.drawLine(x,y, x+width-1, y);
                 break;
     case BOTTOM_LINE: g.drawLine(x,y+height-1, x+width-1, y+height-1);
                 break;
       
     case RECT:      g.drawRect(x, y, width-1, height-1);
                 break;
   }
 }
 //---------------------------------------------------------------------------
 public Insets getBorderInsets(Component c)
 {
   return insets;
 }
 //---------------------------------------------------------------------------
 public boolean isBorderOpaque() { return false; }

} //


 </source>
   
  
 
  



How to create the border

   <source lang="java">
  

import java.awt.Color; import java.awt.GridLayout; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.BorderFactory; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.Border; public class BorderTest extends JFrame {

 public BorderTest() {
   JPanel p = new JPanel();
   Border[] border = new Border[] { BorderFactory.createEtchedBorder(),
       BorderFactory.createTitledBorder("Border types"),
       BorderFactory.createLoweredBevelBorder(),
       BorderFactory.createRaisedBevelBorder(),
       BorderFactory.createEtchedBorder(),
       BorderFactory.createLineBorder(Color.blue),
       BorderFactory.createMatteBorder(10, 10, 10, 10, Color.blue),
       BorderFactory.createEmptyBorder()
   };
   p.setLayout(new GridLayout(border.length, 0, 3, 3));
   for (int i = 0; i < border.length; i++) {
     JPanel borderPanel = new JPanel();
     borderPanel.setBorder(border[i]);
     p.add(borderPanel);
   }
   getContentPane().add(p, "Center");
   setTitle("BorderTest");
   setSize(600, 400);
   addWindowListener(new WindowAdapter() {
     public void windowClosing(WindowEvent e) {
       System.exit(0);
     }
   });
 }
 public static void main(String[] args) {
   JFrame frame = new BorderTest();
   frame.show();
 }

}



 </source>
   
  
 
  



Icon MatteBorder

   <source lang="java">
  

import java.awt.Color; import java.awt.ruponent; import java.awt.Container; import java.awt.Graphics; import java.awt.GridLayout; import java.awt.Polygon; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.border.Border; import javax.swing.border.MatteBorder; public class IconMatteBorder {

 public static void main(String args[]) {
   JFrame frame = new JFrame("Icon Matted Borders");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   Icon diamondIcon = new DiamondIcon(Color.red, true, 10, 10);
   Border diamondBorder = new MatteBorder(10, 10, 10, 10, diamondIcon);
   JButton diamondButton = new JButton("diamonds");
   diamondButton.setBorder(diamondBorder);
   Icon diamondIcon2 = new ImageIcon("diamond.gif");
   Border diamondBorder2 = new MatteBorder(36, 40, 36, 40, diamondIcon2);
   JButton diamondButton2 = new JButton("diamonds2");
   diamondButton2.setBorder(diamondBorder2);
   Container contentPane = frame.getContentPane();
   contentPane.setLayout(new GridLayout(2, 1));
   contentPane.add(diamondButton);
   contentPane.add(diamondButton2);
   frame.setSize(300, 200);
   frame.setVisible(true);
 }

} class DiamondIcon implements Icon {

 private Color color;
 private boolean selected;
 private int width;
 private int height;
 private Polygon poly;
 private static final int DEFAULT_WIDTH = 10;
 private static final int DEFAULT_HEIGHT = 10;
 public DiamondIcon(Color color) {
   this(color, true, DEFAULT_WIDTH, DEFAULT_HEIGHT);
 }
 public DiamondIcon(Color color, boolean selected) {
   this(color, selected, DEFAULT_WIDTH, DEFAULT_HEIGHT);
 }
 public DiamondIcon(Color color, boolean selected, int width, int height) {
   this.color = color;
   this.selected = selected;
   this.width = width;
   this.height = height;
   initPolygon();
 }
 private void initPolygon() {
   poly = new Polygon();
   int halfWidth = width / 2;
   int halfHeight = height / 2;
   poly.addPoint(0, halfHeight);
   poly.addPoint(halfWidth, 0);
   poly.addPoint(width, halfHeight);
   poly.addPoint(halfWidth, height);
 }
 public int getIconHeight() {
   return height;
 }
 public int getIconWidth() {
   return width;
 }
 public void paintIcon(Component c, Graphics g, int x, int y) {
   g.setColor(color);
   g.translate(x, y);
   if (selected) {
     g.fillPolygon(poly);
   } else {
     g.drawPolygon(poly);
   }
   g.translate(-x, -y);
 }

}



 </source>
   
  
 
  



LineBorder Demo

   <source lang="java">
  

import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.border.Border; import javax.swing.border.LineBorder; public class ALineBorder {

 public static void main(String args[]) {
   JFrame frame = new JFrame("Line Borders");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   Border thinBorder = LineBorder.createBlackLineBorder();
   Border thickBorder = new LineBorder(Color.white, 12);
   Border roundedBorder = new LineBorder(Color.black, 12, true);
   JButton thinButton = new JButton("1 Pixel");
   thinButton.setBorder(thinBorder);
   JButton thickButton = new JButton("12 Pixel");
   thickButton.setBorder(thickBorder);
   JButton roundedButton = new JButton("Rounded 12 Pixel");
   roundedButton.setBorder(roundedBorder);
   Container contentPane = frame.getContentPane();
   contentPane.add(thinButton, BorderLayout.NORTH);
   contentPane.add(thickButton, BorderLayout.CENTER);
   contentPane.add(roundedButton, BorderLayout.SOUTH);
   frame.pack();
   frame.setSize(300, frame.getHeight());
   frame.setVisible(true);
 }

}



 </source>
   
  
 
  



MatteBorder Demo

   <source lang="java">
  

import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.border.Border; import javax.swing.border.MatteBorder; public class ColorMatteBorder {

 public static void main(String args[]) {
   JFrame frame = new JFrame("Color Matted Borders");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   Border solidBorder = new MatteBorder(10, 5, 2, 20, Color.red);
   JButton solidButton = new JButton("10x5x2x20");
   solidButton.setBorder(solidBorder);
   Container contentPane = frame.getContentPane();
   contentPane.add(solidButton, BorderLayout.CENTER);
   frame.setSize(300, 100);
   frame.setVisible(true);
 }

}



 </source>
   
  
 
  



Oval border

   <source lang="java">
  

import java.awt.Color; import java.awt.ruponent; import java.awt.Graphics; import java.awt.GridLayout; import java.awt.Insets; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.border.Border; public class OvalBorder implements Border {

 protected int ovalWidth = 6;
 protected int ovalHeight = 6;
 protected Color lightColor = Color.white;
 protected Color darkColor = Color.gray;
 public OvalBorder() {
   ovalWidth = 6;
   ovalHeight = 6;
 }
 public OvalBorder(int w, int h) {
   ovalWidth = w;
   ovalHeight = h;
 }
 public OvalBorder(int w, int h, Color topColor, Color bottomColor) {
   ovalWidth = w;
   ovalHeight = h;
   lightColor = topColor;
   darkColor = bottomColor;
 }
 public Insets getBorderInsets(Component c) {
   return new Insets(ovalHeight, ovalWidth, ovalHeight, ovalWidth);
 }
 public boolean isBorderOpaque() {
   return true;
 }
 public void paintBorder(Component c, Graphics g, int x, int y, int width,
     int height) {
   width--;
   height--;
   g.setColor(lightColor);
   g.drawLine(x, y + height - ovalHeight, x, y + ovalHeight);
   g.drawArc(x, y, 2 * ovalWidth, 2 * ovalHeight, 180, -90);
   g.drawLine(x + ovalWidth, y, x + width - ovalWidth, y);
   g.drawArc(x + width - 2 * ovalWidth, y, 2 * ovalWidth, 2 * ovalHeight,
       90, -90);
   g.setColor(darkColor);
   g.drawLine(x + width, y + ovalHeight, x + width, y + height
       - ovalHeight);
   g.drawArc(x + width - 2 * ovalWidth, y + height - 2 * ovalHeight,
       2 * ovalWidth, 2 * ovalHeight, 0, -90);
   g
       .drawLine(x + ovalWidth, y + height, x + width - ovalWidth, y
           + height);
   g.drawArc(x, y + height - 2 * ovalHeight, 2 * ovalWidth,
       2 * ovalHeight, -90, -90);
 }
 public static void main(String[] s) {
   JFrame f = new JFrame("Oval Border");
   f.setSize(100, 100);
   JPanel p = new JPanel(new GridLayout(0, 1, 5, 5));
   JLabel l = new JLabel("Oval Border");
   l.setBorder(new OvalBorder());
   p.add(l);
   p.setBorder(new OvalBorder());
   f.getContentPane().add(p);
   f.show();
 }

}



 </source>
   
  
 
  



Rectangle border

   <source lang="java">
 

import java.awt.Color; import java.awt.ruponent; import java.awt.Graphics; import java.awt.Insets; import javax.swing.border.AbstractBorder; public class RectangleBorder extends AbstractBorder {

 protected Insets thickness;
 protected Color lineColor;
 protected Insets gap;
 public RectangleBorder(Color color) {
   this(color, new Insets(1, 1, 1, 1));
 }
 public RectangleBorder(Color color, Insets thickness) {
   this(color, thickness, thickness);
 }
 public RectangleBorder(Color color, Insets thickness, Insets gap) {
   lineColor = color;
   this.thickness = thickness;
   this.gap = gap;
 }
 public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
   Color oldColor = g.getColor();

   g.setColor(lineColor);
   // top
   for (int i = 0; i < thickness.top; i++) {
     g.drawLine(x, y + i, x + width, y + i);
   }
   // bottom
   for (int i = 0; i < thickness.bottom; i++) {
     g.drawLine(x, y + height - i - 1, x + width, y + height - i - 1);
   }
   // right
   for (int i = 0; i < thickness.right; i++) {
     g.drawLine(x + width - i - 1, y, x + width - i - 1, y + height);
   }
   // left
   for (int i = 0; i < thickness.left; i++) {
     g.drawLine(x + i, y, x + i, y + height);
   }
   g.setColor(oldColor);
 }
 /**
  * Returns the insets of the border.
  * 
  * @param c
  *          the component for which this border insets value applies
  */
 public Insets getBorderInsets(Component c) {
   return gap;
 }
 public Insets getBorderInsets(Component c, Insets insets) {
   insets.left = gap.left;
   insets.top = gap.top;
   insets.right = gap.right;
   insets.bottom = gap.bottom;
   return insets;
 }
 /**
  * Returns the color of the border.
  */
 public Color getLineColor() {
   return lineColor;
 }
 /**
  * Returns the thickness of the border.
  */
 public Insets getThickness() {
   return thickness;
 }
 /**
  * Returns whether or not the border is opaque.
  */
 public boolean isBorderOpaque() {
   return false;
 }
 public Insets getGap() {
   return gap;
 }

}


 </source>
   
  
 
  



Red Green Border

   <source lang="java">
  

import java.awt.BorderLayout; import java.awt.Color; import java.awt.ruponent; import java.awt.Container; import java.awt.Graphics; import java.awt.Insets; import javax.swing.AbstractButton; import javax.swing.ButtonModel; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.border.AbstractBorder; import javax.swing.border.Border; public class RedGreenBorder extends AbstractBorder {

 public boolean isBorderOpaque() {
   return true;
 }
 public Insets getBorderInsets(Component c) {
   return new Insets(3, 3, 3, 3);
 }
 public void paintBorder(Component c, Graphics g, int x, int y, int width,
     int height) {
   Insets insets = getBorderInsets(c);
   Color horizontalColor;
   Color verticalColor;
   if (c.isEnabled()) {
     boolean pressed = false;
     if (c instanceof AbstractButton) {
       ButtonModel model = ((AbstractButton) c).getModel();
       pressed = model.isPressed();
     }
     if (pressed) {
       horizontalColor = Color.red;
       verticalColor = Color.green;
     } else {
       horizontalColor = Color.green;
       verticalColor = Color.red;
     }
   } else {
     horizontalColor = Color.lightGray;
     verticalColor = Color.lightGray;
   }
   g.setColor(horizontalColor);
   g.translate(x, y);
   // top
   g.fillRect(0, 0, width, insets.top);
   // bottom
   g.fillRect(0, height - insets.bottom, width, insets.bottom);
   g.setColor(verticalColor);
   // left
   g.fillRect(0, insets.top, insets.left, height - insets.top  - insets.bottom);
     g.fillRect(width - insets.right, insets.top, insets.right, height- insets.top - insets.bottom);
   g.translate(-x, -y);
 }
 public static void main(String args[]) {
   JFrame frame = new JFrame("My Border");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   Border border = new RedGreenBorder();
   JButton helloButton = new JButton("Hello");
   helloButton.setBorder(border);
   JButton braveButton = new JButton("Brave New");
   braveButton.setBorder(border);
   braveButton.setEnabled(false);
   JButton worldButton = new JButton("World");
   worldButton.setBorder(border);
   Container contentPane = frame.getContentPane();
   contentPane.add(helloButton, BorderLayout.NORTH);
   contentPane.add(braveButton, BorderLayout.CENTER);
   contentPane.add(worldButton, BorderLayout.SOUTH);
   frame.setSize(300, 100);
   frame.setVisible(true);
 }

}



 </source>
   
  
 
  



Right border

   <source lang="java">
 

//com.amkai.borders; import java.awt.Graphics; import java.awt.Insets; import java.awt.Color; import java.awt.ruponent; import javax.swing.border.AbstractBorder; public class RightSideBorder extends AbstractBorder {

   protected int thickness;
   protected Color lineColor;
   protected int gap;
   public RightSideBorder(Color color) {
       this(color, 1, 1);
   }
   public RightSideBorder(Color color, int thickness)  {
       this(color, thickness, thickness);
   }
   public RightSideBorder(Color color, int thickness, int gap)  {
       lineColor = color;
       this.thickness = thickness;
       this.gap = gap;
   }
   public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
       Color oldColor = g.getColor();
       int i;
       g.setColor(lineColor);
       for(i = 0; i < thickness; i++)  {
         g.drawLine(x+width-i-1, y, x+width-i-1, y+height);
       }
       g.setColor(oldColor);
   }
   /**
    * Returns the insets of the border.
    * @param c the component for which this border insets value applies
    */
   public Insets getBorderInsets(Component c)       {
       return new Insets(0, 0, 0,gap);
   }
   public Insets getBorderInsets(Component c, Insets insets) {
       insets.left = 0;
       insets.top = 0;
       insets.right = gap;
       insets.bottom = 0;
       return insets;
   }
   /**
    * Returns the color of the border.
    */
   public Color getLineColor()     {
       return lineColor;
   }
   /**
    * Returns the thickness of the border.
    */
   public int getThickness()       {
       return thickness;
   }
   /**
    * Returns whether or not the border is opaque.
    */
   public boolean isBorderOpaque() { 
       return false; 
   }
 public int getGap() {
   return gap;
 }

}


 </source>
   
  
 
  



Set title position

   <source lang="java">
  

import java.awt.Color; import javax.swing.BorderFactory; import javax.swing.border.LineBorder; import javax.swing.border.TitledBorder; public class Main {

 public static void main(String[] argv) {
   LineBorder border = new LineBorder(Color.red);
   TitledBorder titledBorder = BorderFactory.createTitledBorder(border, "Title");
   
   // Or: DEFAULT_POSITION, ABOVE_TOP, TOP, ABOVE_BOTTOM, BOTTOM, BELOW_BOTTOM
   titledBorder.setTitlePosition(TitledBorder.BELOW_TOP);
 }

}


 </source>
   
  
 
  



Soft BevelBorder

   <source lang="java">
  

import java.awt.Container; import java.awt.GridLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.border.Border; import javax.swing.border.SoftBevelBorder; public class ASoftBevelBorder {

 public static void main(String args[]) {
   JFrame frame = new JFrame("Soft Bevel Borders");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   Border raisedBorder = new SoftBevelBorder(SoftBevelBorder.RAISED);
   Border loweredBorder = new SoftBevelBorder(SoftBevelBorder.LOWERED);
   JButton raisedButton = new JButton("Raised");
   raisedButton.setBorder(raisedBorder);
   JButton loweredButton = new JButton("Lowered");
   loweredButton.setBorder(loweredBorder);
   Container contentPane = frame.getContentPane();
   contentPane.setLayout(new GridLayout(1, 2));
   contentPane.add(raisedButton);
   contentPane.add(loweredButton);
   frame.setSize(300, 100);
   frame.setVisible(true);
 }

}



 </source>
   
  
 
  



Solid border button border 3D border

   <source lang="java">
  

import java.awt.Color; import java.awt.ruponent; import java.awt.Graphics; import java.awt.Insets; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.border.Border; import javax.swing.border.rupoundBorder; import javax.swing.border.EmptyBorder; public class SolidBorder implements Border {

 protected Color topColor = Color.white;
 protected Color bottomColor = Color.gray;
 public SolidBorder() {
 }
 public Insets getBorderInsets(Component c) {
   return new Insets(2, 2, 2, 2);
 }
 public boolean isBorderOpaque() {
   return true;
 }
 public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
   width--;
   height--;
   g.setColor(topColor);
   g.drawLine(x, y + height, x, y);
   g.drawLine(x , y, x + width , y);
   g.setColor(bottomColor);
   g.drawLine(x + width, y, x + width, y + height);
   g.drawLine(x , y + height, x + width, y + height);
 }
 public static void main(String[] args) {
   JFrame frame = new JFrame("Custom Border: SolidBorder");
   JLabel label = new JLabel("SolidBorder");
   ((JPanel) frame.getContentPane()).setBorder(new CompoundBorder(
       new EmptyBorder(10, 10, 10, 10), new SolidBorder()));
   frame.getContentPane().add(label);
   frame.setBounds(0, 0, 300, 150);
   frame.setVisible(true);
 }

}



 </source>
   
  
 
  



TitledBorder

   <source lang="java">
  

import java.awt.Container; import java.awt.GridLayout; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.border.TitledBorder; public class TitledJustBorder {

 public static void main(String args[]) {
   JFrame frame = new JFrame("Justified Titled Borders");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   TitledBorder leftBorder = BorderFactory.createTitledBorder("Left");
   leftBorder.setTitleJustification(TitledBorder.LEFT);
   JButton leftButton = new JButton();
   leftButton.setBorder(leftBorder);
   TitledBorder rightBorder = BorderFactory.createTitledBorder("Right");
   rightBorder.setTitleJustification(TitledBorder.RIGHT);
   JButton rightButton = new JButton();
   rightButton.setBorder(rightBorder);
   TitledBorder centerBorder = BorderFactory.createTitledBorder("Center");
   centerBorder.setTitleJustification(TitledBorder.CENTER);
   JButton centerButton = new JButton();
   centerButton.setBorder(centerBorder);
   Container contentPane = frame.getContentPane();
   contentPane.setLayout(new GridLayout(3, 1));
   contentPane.add(leftButton);
   contentPane.add(rightButton);
   contentPane.add(centerButton);
   frame.setSize(300, 200);
   frame.setVisible(true);
 }

}



 </source>
   
  
 
  



TitledBorder 3

   <source lang="java">
  

import java.awt.Container; import java.awt.GridLayout; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.border.TitledBorder; public class TitledPostBorder {

 public static void main(String args[]) {
   JFrame frame = new JFrame("Positioned Titled Borders");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   TitledBorder aboveTopBorder = BorderFactory
       .createTitledBorder("AboveTop");
   aboveTopBorder.setTitlePosition(TitledBorder.ABOVE_TOP);
   JButton aboveTopButton = new JButton();
   aboveTopButton.setBorder(aboveTopBorder);
   TitledBorder topBorder = BorderFactory.createTitledBorder("Top");
   topBorder.setTitlePosition(TitledBorder.TOP);
   JButton topButton = new JButton();
   topButton.setBorder(topBorder);
   TitledBorder belowTopBorder = BorderFactory
       .createTitledBorder("BelowTop");
   belowTopBorder.setTitlePosition(TitledBorder.BELOW_TOP);
   JButton belowTopButton = new JButton();
   belowTopButton.setBorder(belowTopBorder);
   TitledBorder aboveBottomBorder = BorderFactory
       .createTitledBorder("AboveBottom");
   aboveBottomBorder.setTitlePosition(TitledBorder.ABOVE_BOTTOM);
   JButton aboveBottomButton = new JButton();
   aboveBottomButton.setBorder(aboveBottomBorder);
   TitledBorder bottomBorder = BorderFactory.createTitledBorder("Bottom");
   bottomBorder.setTitlePosition(TitledBorder.BOTTOM);
   JButton bottomButton = new JButton();
   bottomButton.setBorder(bottomBorder);
   TitledBorder belowBottomBorder = BorderFactory
       .createTitledBorder("BelowBottom");
   belowBottomBorder.setTitlePosition(TitledBorder.BELOW_BOTTOM);
   JButton belowBottomButton = new JButton();
   belowBottomButton.setBorder(belowBottomBorder);
   Container contentPane = frame.getContentPane();
   contentPane.setLayout(new GridLayout(3, 2));
   contentPane.add(aboveTopButton);
   contentPane.add(aboveBottomButton);
   contentPane.add(topButton);
   contentPane.add(bottomButton);
   contentPane.add(belowTopButton);
   contentPane.add(belowBottomButton);
   frame.setSize(300, 200);
   frame.setVisible(true);
 }

}



 </source>
   
  
 
  



TitledBorder Demo

   <source lang="java">
  

import java.awt.BorderLayout; import java.awt.Container; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.border.TitledBorder; public class DoubleTitle {

 public static void main(String args[]) {
   JFrame frame = new JFrame("Double Title");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   TitledBorder topBorder = BorderFactory.createTitledBorder("Top");
   topBorder.setTitlePosition(TitledBorder.TOP);
   TitledBorder doubleBorder = new TitledBorder(topBorder, "Bottom",
       TitledBorder.RIGHT, TitledBorder.BOTTOM);
   JButton doubleButton = new JButton();
   doubleButton.setBorder(doubleBorder);
   Container contentPane = frame.getContentPane();
   contentPane.add(doubleButton, BorderLayout.CENTER);
   frame.setSize(300, 100);
   frame.setVisible(true);
 }

}



 </source>