Как поместить анимацию на JPanel? - Java

Узнай цену своей работы

Формулировка задачи:

Всем привет как можно поместить анимацию на JPanel? Т.е. анимация по умолчанию помещается во JFrame так? И вот, как мне поместить анимацию из JFrame на JPanel? Вот обычный код с простенькой программой анимации по середине(В центральной части фрейма шарик перемещается из одного угла в другой) и кнопками по бокам.
Листинг программы
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import javax.swing.*;
  4.  
  5. public class JavaApplication12 {
  6. JButton button,button2;
  7. JFrame frame;
  8. int x = 70;
  9. int y = 70;
  10.  
  11. public static void main(String[] args) {
  12. JavaApplication12 gui = new JavaApplication12();
  13. gui.go();
  14. }
  15.  
  16. class MyDrawPanel extends JPanel implements ActionListener {
  17. @Override
  18. public void actionPerformed(ActionEvent e) {
  19. new Thread(() -> {
  20. for (int i = 0; i < 130; i++) {
  21. if((x&y)<200){
  22. x++;
  23. y++;
  24. }
  25. this.repaint();
  26. try {
  27. Thread.sleep(50);
  28. } catch (Exception ex) {
  29. }
  30. }
  31. }).start();
  32. }
  33.  
  34. @Override
  35. public void paintComponent(Graphics g){
  36. g.setColor(Color.white);
  37. g.fillRect(0,0, this.getWidth(), this.getHeight());
  38. g.setColor(Color.green);
  39. g.fillOval(x,y,40,40);
  40. }
  41.  
  42. }
  43.  
  44. class Second extends JPanel implements ActionListener {
  45. void restart(){
  46. x = 70;
  47. y = 70;
  48. drawPanel.repaint();
  49. }
  50. @Override
  51. public void actionPerformed(ActionEvent e) {
  52. sec.restart();
  53. }
  54. }
  55. Second sec = new Second();
  56. MyDrawPanel drawPanel = new MyDrawPanel();
  57. public void go(){
  58. frame = new JFrame();
  59. JPanel panel,panel2;
  60. panel = new JPanel();
  61. panel2 = new JPanel();
  62. panel.setBackground(Color.darkGray);
  63. panel2.setBackground(Color.gray);
  64. button = new JButton("Click me");
  65. button2 = new JButton("Restart");
  66. Font bigFont = new Font ("serif" , Font.BOLD, 20);
  67. panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
  68. button.setFont(bigFont);
  69. button2.setFont(bigFont);
  70. panel.add(button);
  71. //panel.add(button2);
  72. panel2.add(button2);
  73. frame.getContentPane().add(drawPanel);
  74. frame.getContentPane().add(panel2, BorderLayout.WEST);
  75. button.addActionListener(drawPanel);
  76. button2.addActionListener((ActionListener) sec);
  77.  
  78. frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
  79. frame.getContentPane().add(panel, BorderLayout.EAST);
  80. frame.setSize(580,320);
  81. frame.setVisible(true);
  82. }
  83. }
Так вот как можно добавить анимацию из центральной части JFrame на левую панель?

Решение задачи: «Как поместить анимацию на JPanel?»

textual
Листинг программы
  1. panel2.add(drawPanel);
  2. frame.getContentPane().add(panel2, BorderLayout.WEST);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут