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);
}
}