自 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();
}
}
}
}
在这件事上,我真的需要你的帮助。明天将介绍我正在制作的整个程序。这是完成它的最后一步。我已经尽我所能自己解决这个问题,但没有成功。