Как поместить анимацию на 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);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д