私は24時間前からずっとこれに取り組んできました。タイマーを使用して簡単なアニメーションを描画するカスタム jpanel があります。私が欲しいのは、このパネルをピカチュウとサスケの間の中央に表示することです (私はこれまでずっとやろうとしてきました)、アニメーションが開始され、このボタンがクリックされた場合にのみ発生します.
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class App extends JFrame {
private static JPanel p53 = new JPanel();
private static JButton fire = new JButton("Attack");
private AttackFX attackfx = new AttackFX();
public App() {
fire.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent atk) {
p53.add(attackfx);
Timer timer1 = new Timer(800, new ActionListener() {
@Override
public void actionPerformed(ActionEvent ld2) {
}
});
timer1.start();
timer1.setRepeats(false);
}
});
}
public static void main(String[] a) {
App Battleframe = new App();
Battleframe.add(fire);
Battleframe.add(p53);
Battleframe.setResizable(false);
Battleframe.setTitle("OnFight.Combat_Arena_Beta");
Battleframe.setSize(381, 400);
Battleframe.setLocationRelativeTo(null);
Battleframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Battleframe.setVisible(true);
}
class AttackFX extends JPanel {
private int xCoor = 1;
public AttackFX() {
Timer tm1 = new Timer(100, new TimerListener2());
tm1.start();
tm1.setRepeats(true);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
xCoor += 1;
g.setColor(Color.cyan);
g.fillOval(xCoor, 40, 8, 8);
}
class TimerListener2 implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
repaint();
}
}
}
}
私は本当にあなたの助けが必要です。明日は、私が作っているこのプログラム全体のプレゼンテーションです。そして、これはそれを達成するための最後のステップです。私は自分でこれを解決するためにできる限りのことを試みましたが、成功しませんでした。