更改基本Java动画中的颜色

问题描述 投票:0回答:1

我正在弄乱Java中的图形(特别是通过Swing和AWT库),并且想在屏幕上移动一个圆圈(画线),并且当xy坐标设置为0时,线击中了画布的边界。我对这部分代码没有问题。

但是,现在我试图在坐标均为0(使用super.paint(Graphics))时清除屏幕并更改颜色。屏幕清除效果很好,但是我无法更改颜色。看起来,当坐标都为0时,指定颜色的椭圆形出现在[0,0]位置的条纹。但是,我希望条纹的颜色可以更改颜色,直到将坐标重置为(0,0)。这是我的代码:

@SuppressWarnings("serial") public class Game extends JPanel { static final int SCREEN_X = 300; static final int SCREEN_Y = 400; int x = 0; int y = 0; private void moveBall() { x += 1; y += 1; if (x >= SCREEN_X) x = 0; if (y >= SCREEN_Y) y = 0; } @Override public void paint(Graphics g) { Graphics2D g2d = (Graphics2D) g; g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); if (x == 0 && y == 0) { super.paint(g); // Generate random value in [0, 5) int rand_val = (new Random()).nextInt(5); // Init random color variable Color rand_color = Color.black; // Pick a random color switch (rand_val) { case 0: rand_color = Color.black; break; case 1: rand_color = Color.red; break; case 2: rand_color = Color.green; break; case 3: rand_color = Color.blue; break; case 4: rand_color = Color.gray; break; } // I'm assuming I need to do something more here? // This is likely where my mistake is... g2d.setColor(rand_color); } g2d.fillOval(x, y, 30, 30); } public static void main(String[] args) throws InterruptedException { JFrame frame = new JFrame("Mini Tennis"); Game game = new Game(); frame.add(game); frame.setSize(SCREEN_X, SCREEN_Y); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); while (true) { game.moveBall(); game.repaint(); Thread.sleep(10); } } }

我正在弄乱Java中的图形(特别是通过Swing和AWT库),并想在屏幕上移动一个圆(画线),并在该行将x或y坐标设置回0时... 
java swing loops animation awt
1个回答
0
投票
// I'm assuming I need to do something more here? // This is likely where my mistake is... g2d.setColor(rand_color);
© www.soinside.com 2019 - 2024. All rights reserved.