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

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

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

Всем привет как можно поместить анимацию на JPanel? Т.е. анимация по умолчанию помещается во JFrame так? И вот, как мне поместить анимацию из JFrame на JPanel? Вот обычный код с простенькой программой анимации по середине(В центральной части фрейма шарик перемещается из одного угла в другой) и кнопками по бокам.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class JavaApplication12 {
    JButton button,button2;
    JFrame frame;
    int x = 70;
    int y = 70;

    public static void main(String[] args) {
        JavaApplication12 gui = new JavaApplication12();
        gui.go();
    }

    class MyDrawPanel extends JPanel implements ActionListener { 
        @Override                                   
public void actionPerformed(ActionEvent e) {
    new Thread(() -> {                      
        for (int i = 0; i < 130; i++) {     
            if((x&y)<200){
                x++;                            
                y++;
            }
            
            this.repaint();                 
            try {                           
                Thread.sleep(50);           
            } catch (Exception ex) {        
            }                               
        }
        
    }).start();                             
}

    @Override
    public void paintComponent(Graphics g){
        g.setColor(Color.white); 
        g.fillRect(0,0, this.getWidth(), this.getHeight());
        
        g.setColor(Color.green); 
        g.fillOval(x,y,40,40); 
 
    }

    }

    class Second extends JPanel implements ActionListener {
        void restart(){
            x = 70;
            y = 70;
            drawPanel.repaint();
        }
 
        @Override
        public void actionPerformed(ActionEvent e) {
            sec.restart();
        }
    }
    Second sec = new Second();
    MyDrawPanel drawPanel = new MyDrawPanel();
    
    public void go(){
        frame = new JFrame();
        JPanel panel,panel2; 
        panel = new JPanel();
        panel2 = new JPanel();
        panel.setBackground(Color.darkGray);
        panel2.setBackground(Color.gray);
        
        button = new JButton("Click me");
        button2 = new JButton("Restart");
        Font bigFont = new Font ("serif" , Font.BOLD, 20); 
        panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); 
        button.setFont(bigFont);
        button2.setFont(bigFont);
        panel.add(button);
        //panel.add(button2);
        panel2.add(button2);
        
        frame.getContentPane().add(drawPanel);
        frame.getContentPane().add(panel2, BorderLayout.WEST);
        
        button.addActionListener(drawPanel);
        button2.addActionListener((ActionListener) sec);

        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.getContentPane().add(panel, BorderLayout.EAST);
 
        frame.setSize(580,320);
        frame.setVisible(true);
        
    }
 
}
Так вот как можно добавить анимацию из центральной части JFrame на левую панель?

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

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

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


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

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

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