Mega Code Archive

 
Categories / Java by API / Javax Swing Border
 

Extends AbstractBorder (CurvedBorder)

import java.awt.Color; import java.awt.Component; 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 MainClass extends JPanel {     public MainClass() {         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 MainClass());          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; } }