diff options
author | sowgro <tpoke.ferrari@gmail.com> | 2023-05-05 08:18:31 -0400 |
---|---|---|
committer | sowgro <tpoke.ferrari@gmail.com> | 2023-05-05 08:18:31 -0400 |
commit | 9e9e1a5a1b43c50e7ce962e7be734c958cc67cf2 (patch) | |
tree | 1e3f088dd223310fc08f0ed0a0336a9143c93df3 /dropShadow/PanelShadow.java | |
parent | a36ff772f5c180030f25883f7a63307a66bdb838 (diff) | |
download | NPEhero-9e9e1a5a1b43c50e7ce962e7be734c958cc67cf2.tar.gz NPEhero-9e9e1a5a1b43c50e7ce962e7be734c958cc67cf2.tar.bz2 NPEhero-9e9e1a5a1b43c50e7ce962e7be734c958cc67cf2.zip |
lots of methods to try to get a drop shadow
Diffstat (limited to 'dropShadow/PanelShadow.java')
-rw-r--r-- | dropShadow/PanelShadow.java | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/dropShadow/PanelShadow.java b/dropShadow/PanelShadow.java new file mode 100644 index 0000000..be1c2f3 --- /dev/null +++ b/dropShadow/PanelShadow.java @@ -0,0 +1,100 @@ +package dropShadow; + +import java.awt.Color; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.RenderingHints; +import java.awt.image.BufferedImage; +import javax.swing.JPanel; + +public class PanelShadow extends JPanel { + + public ShadowType getShadowType() { + return shadowType; + } + + public void setShadowType(ShadowType shadowType) { + this.shadowType = shadowType; + } + + public int getShadowSize() { + return shadowSize; + } + + public void setShadowSize(int shadowSize) { + this.shadowSize = shadowSize; + } + + public float getShadowOpacity() { + return shadowOpacity; + } + + public void setShadowOpacity(float shadowOpacity) { + this.shadowOpacity = shadowOpacity; + } + + public Color getShadowColor() { + return shadowColor; + } + + public void setShadowColor(Color shadowColor) { + this.shadowColor = shadowColor; + } + + private ShadowType shadowType = ShadowType.CENTER; + private int shadowSize = 6; + private float shadowOpacity = 0.5f; + private Color shadowColor = Color.BLACK; + + public PanelShadow() { + setOpaque(false); + } + + @Override + protected void paintComponent(Graphics grphcs) { + createShadow(grphcs); + super.paintComponent(grphcs); + } + + private void createShadow(Graphics grphcs) { + Graphics2D g2 = (Graphics2D) grphcs; + int size = shadowSize * 2; + int x = 0; + int y = 0; + int width = getWidth() - size; + int height = getHeight() - size; + if (shadowType == ShadowType.TOP) { + x = shadowSize; + y = size; + } else if (shadowType == ShadowType.BOT) { + x = shadowSize; + y = 0; + } else if (shadowType == ShadowType.TOP_LEFT) { + x = size; + y = size; + } else if (shadowType == ShadowType.TOP_RIGHT) { + x = 0; + y = size; + } else if (shadowType == ShadowType.BOT_LEFT) { + x = size; + y = 0; + } else if (shadowType == ShadowType.BOT_RIGHT) { + x = 0; + y = 0; + } else { + // Center + x = shadowSize; + y = shadowSize; + } + BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = img.createGraphics(); + g.setColor(getBackground()); + g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + // g.fillRoundRect(0, 0, width, height, 10, 10); + g.fillOval(0, 0, width, width); + // Create Shadow + ShadowRenderer render = new ShadowRenderer(shadowSize, shadowOpacity, shadowColor); + g2.drawImage(render.createShadow(img), 0, 0, null); + g2.drawImage(img, x, y, null); + } +} |