Я новичок в 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);
}
}
Не могли бы вы разместить версию с строкой #? Вы получите больше ответов. Или вставьте строки, которые не имеют обратных тиков. – avgvstvs
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