Как поместить анимацию на 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);