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);
}

}

Java 实现小球阴影效果 - 代码示例

原文地址: http://www.cveoy.top/t/topic/lhCj 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录