Java 实现小球阴影效果 - 代码示例
private static final int SHADOW_WIDTH = 15;
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setSize(1000, 600);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.setBackground(Color.BLACK);
// 使用panel来显示图像
JPanel panel = new JPanel() {
// 重新绘制组件
@Override
public void paintComponent(Graphics g) {
// 清空屏幕
clear(g);
// 先把小球画出来
drawBall(g);
// 画出小球的阴影
drawShadow(g);
}
};
// 监听键盘按键
frame.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
switch (e.getKeyCode()) {
case KeyEvent.VK_UP:
if (ballY > 0) {
ballY -= 20;
}
break;
case KeyEvent.VK_DOWN:
if (ballY < frame.getHeight() - BALL_SIZE) {
ballY += 20;
}
break;
case KeyEvent.VK_LEFT:
if (ballX > 0) {
ballX -= 20;
}
break;
case KeyEvent.VK_RIGHT:
if (ballX < frame.getWidth() - BALL_SIZE) {
ballX += 20;
}
break;
}
// 小球位置发生变化,重新绘制
panel.repaint();
}
});
frame.add(panel);
frame.setVisible(true);
}
// 清空屏幕
private static void clear(Graphics g) {
g.setColor(Color.BLACK);
g.fillRect(0, 0, 1000, 600);
}
// 画出小球
private static void drawBall(Graphics g) {
g.setColor(BALL_COLOR);
g.fillOval(ballX, ballY, BALL_SIZE, BALL_SIZE);
}
// 画出小球的阴影
private static void drawShadow(Graphics g) {
g.setColor(SHADOW_COLOR);
g.fillOval(ballX + SHADOW_WIDTH, ballY + SHADOW_WIDTH, BALL_SIZE, BALL_SIZE);
}
}
原文地址: http://www.cveoy.top/t/topic/lhCj 著作权归作者所有。请勿转载和采集!