2015-04-25 3 views
0

Я новичок в Java, и теперь я работаю над графикой, и я делаю простой прыгающий шар. сначала я создал один прыгающий шар, и он работал, тогда я добавил еще один мяч, но произошла ошибка. «ошибка: не может найти символ», это произошло в строке 33,43,55 и 59. Вы можете помочь мне? кажется, что я вызвал все необходимые переменные.Два простых прыгающих шара

import javax.swing.*; 
import java.awt.*; 
import java.awt.*; 
import java.util.*; 
import java.awt.event.*; 
import javax.swing.Timer; 
public class BouncingBall extends JPanel 
{ 
//1st ball 
int x1 = 250, y1 = 100; 
int width1 = 50, height1 = 50; 
int xpos1 = 0, ypos1 = 0; 
//2nd ball 
int x2 = 20, y2 = 20; 
int width2 = 100, height2 = 100; 
int xpos2 = 0, ypos2 = 0; 
java.util.Timer timer; 
static JFrame frame; 
public BouncingBall() 
{ 
frame = new JFrame("Bouncing Ball"); 
frame.setSize(400,400); 
frame.setVisible(true); 
setForeground(Color.red); 
timer = new java.util.Timer(); 
timer.scheduleAtFixedRate(new TimerTask() 
{ 
public void run() 
{ 
{ 
if(x1 < 0) 
xpos1 = 1; 
if(x1 >= getWidth1() - 45) 
xpos1 = -1; 
if(y1 < 0) 
ypos1 = 1; 
if(y1 >= getHeight1() - 45) 
ypos1 = - 1; 
x1 += xpos1; 
y1 += ypos1; 
repaint(); 
} 
{ 
if(x2 < 0) 
xpos2 = 1; 
if(x2 >= getWidth2() - 45) 
xpos2 = -1; 
if(y2 < 0) 
ypos2 = 1; 
if(y2 >= getHeight2() - 45) 
ypos2 = - 1; 
x2 += xpos2; 
y2 += ypos2; 
repaint(); 
} 
} 
}, 0, 5); 
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
} 
public void paint(Graphics g) 
{ 
super.paint(g); 
Graphics2D g2D = (Graphics2D) g; 
g2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING, 
RenderingHints.VALUE_ANTIALIAS_ON); 
g2D.fillOval(x1,y1,width1,height1); 
g2D.fillOval(x2,y2,width2,height2); 
} 
public static void main(String args[]) 
{ 
BouncingBall ball = new BouncingBall(); 
frame.add(ball); 
} 
} 
+0

Не могли бы вы разместить версию с строкой #? Вы получите больше ответов. Или вставьте строки, которые не имеют обратных тиков. – avgvstvs

+0

Dont 'использовать 'java.util.Timer', использовать' javax.swing.Timer', он выполняет обратные вызовы в контексте потока Dispatching Event, что делает его более безопасным для изменения состояния пользовательского интерфейса изнутри. Рассмотрите возможность использования 'paintComponent' над' paint', поскольку это предотвратит возможные проблемы в будущем. См. [Живопись в AWT и Swing] (http://www.oracle.com/technetwork/java/painting-140037.html), [Выполнение пользовательской живописи] (http://docs.oracle.com/javase/tutorial/ uiswing/painting /) и [Как использовать Swing Timers] (http://docs.oracle.com/javase/tutorial/uiswing/misc/timer.html) для получения более подробной информации. – MadProgrammer

ответ

2

Вот 4 линии в вопросе:

if(x1 >= getWidth1() - 45) 
if(y1 >= getHeight1() - 45) 
if(x2 >= getWidth2() - 45) 
if(y2 >= getHeight2() - 45) 

Ни один из этих методов не реализованы.

Возможно, вы хотите, чтобы frame.getWidth() и frame.getHeight().

+0

Что вы подразумеваете под управлением? потому что когда я сделал один мяч, он был успешным, поэтому я добавил еще один мяч, и я просто добавил переменные для этого шара и произошла ошибка – Newbie10

+0

Вы не пишете эти методы. –

+0

О, я вижу .. Большое спасибо за помощь ребятам! – Newbie10

Смежные вопросы