Im в процессе обучения графическому интерфейсу на Java. Im делает этот очень простой графический интерфейс, который буквально масштабирует размер круга каждые 5 миллисекунд, а затем, когда ширина и высота достигают определенного числа, он масштабируется и продолжает выполнять этот процесс. Мне удалось заставить круг появиться на экране, но по какой-то странной причине его не масштабировать.Как анимировать круг
public class circle extends JPanel implements ActionListener {
Timer tm = new Timer(5, this);
int XDiameter = 20;
int YDiameter = 20;
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.GREEN);
g.fillOval(40, 40, XDiameter, YDiameter);
tm.start();
}
@Override
public void actionPerformed(ActionEvent e) {
SuperSizeCircle();
repaint();
}
public void SuperSizeCircle(){
while(true){
XDiameter = XDiameter + 2;
YDiameter = YDiameter + 2;
if(XDiameter > 200 && YDiameter > 200){
XDiameter --;
YDiameter --;
}else if(XDiameter < 20 && YDiameter < 20){
XDiameter ++;
YDiameter ++;
}
}
}
}
Основной класс:
public class main {
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame frame = new JFrame("Circle enlarger");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400,400);
frame.setVisible(true);
circle co = new circle();
frame.add(co);
}
}
Таймер перерисовывает Графический интерфейс пользователя каждые 5 Миллис для вас. Вы не должны иметь бесконечный цикл в 'SuperSizeCircle()' (который должен быть назван 'superSizeCircle()'). –
Добавить 'co', _then_' setVisible() ' –