[java] 자바 스윙 컴포넌트에서 컴포넌트에 그림자 효과를 추가하는 방법은 어떻게 되나요?
아래는 JLayer
클래스를 사용하여 그림자 효과를 추가하는 간단한 예제입니다.
import javax.swing.*;
import java.awt.*;
import org.jdesktop.swingx.JXLayer;
public class ShadowEffectExample {
public static void main(String[] args) {
JFrame frame = new JFrame("그림자 효과 예제");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel label = new JLabel("그림자 효과");
label.setFont(new Font("Arial", Font.PLAIN, 20));
JXLayer<JLabel> jxLayer = new JXLayer<>(label);
jxLayer.setUI(new ShadowLayerUI());
frame.add(jxLayer);
frame.setSize(300, 200);
frame.setVisible(true);
}
}
class ShadowLayerUI extends LayerUI<JComponent> {
@Override
public void paint(Graphics g, JComponent c) {
Graphics2D g2 = (Graphics2D) g.create();
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.setColor(Color.BLACK);
g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f));
g2.fillRoundRect(10, 10, c.getWidth() - 20, c.getHeight() - 20, 15, 15);
g2.dispose();
super.paint(g, c);
}
}
위의 예제는 JLayer
클래스와 LayerUI
클래스를 사용하여 JLabel
에 그림자 효과를 추가하는 방법을 보여줍니다. 위의 코드를 실행하면 “그림자 효과” 텍스트가 있는 창이 표시되고 텍스트 주변에 그림자 효과가 나타납니다.
더 복잡한 그림자 효과를 구현하려면 LayerUI
클래스를 상속받아 원하는 형태의 그림자를 그리는 코드를 작성하면 됩니다.