Java tutorial
import java.awt.Color; import java.awt.Component; import java.awt.Graphics; import java.awt.Insets; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.border.Border; class SimpleBorder implements Border { int top; int left; int bottom; int right; Color color = null; public SimpleBorder() { this.top = 2; this.left = 4; this.bottom = 8; this.right = 10; this.color = Color.RED; } public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) { Insets insets = getBorderInsets(c); if (color != null) g.setColor(color); g.fill3DRect(0, 0, width - insets.right, insets.top, true); g.fill3DRect(0, insets.top, insets.left, height - insets.top, true); g.fill3DRect(insets.left, height - insets.bottom, width - insets.left, insets.bottom, true); g.fill3DRect(width - insets.right, 0, insets.right, height - insets.bottom, true); } public Insets getBorderInsets(Component c) { return new Insets(top, left, bottom, right); } public boolean isBorderOpaque() { return true; } } public class CustomBorderDemo { public static void main(String[] a) { JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JButton button = new JButton("Aaaaaaaaaaa"); button.setBorder(new SimpleBorder()); frame.add(button); frame.pack(); frame.setVisible(true); } }