aboutsummaryrefslogtreecommitdiff
path: root/dropShadow/PanelShadow.java
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2023-05-05 08:18:31 -0400
committersowgro <tpoke.ferrari@gmail.com>2023-05-05 08:18:31 -0400
commit9e9e1a5a1b43c50e7ce962e7be734c958cc67cf2 (patch)
tree1e3f088dd223310fc08f0ed0a0336a9143c93df3 /dropShadow/PanelShadow.java
parenta36ff772f5c180030f25883f7a63307a66bdb838 (diff)
downloadNPEhero-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.java100
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);
+ }
+}