Как поместить анимацию на JPanel? - Java
Формулировка задачи:
Всем привет как можно поместить анимацию на JPanel? Т.е. анимация по умолчанию помещается во JFrame так? И вот, как мне поместить анимацию из JFrame на JPanel?
Вот обычный код с простенькой программой анимации по середине(В центральной части фрейма шарик перемещается из одного угла в другой) и кнопками по бокам.
Так вот как можно добавить анимацию из центральной части JFrame на левую панель?
Листинг программы
- 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);
- }
- }
Решение задачи: «Как поместить анимацию на JPanel?»
textual
Листинг программы
- panel2.add(drawPanel);
- frame.getContentPane().add(panel2, BorderLayout.WEST);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д