我已经开始使用 Java 进行编程,但 Swing 有一个问题。单击按钮后,我想重复椭圆动画przycisk
。所以这就是为什么我RamkaAnimacjaKola mojeGUI= new RamkaAnimacjaKola();
在我的ActionPerformed
. 那么我应该改变什么?
我打电话Thread.sleap
是因为那是我书中的一个例子。当我尝试只运行我的代码一次时,它会起作用。这意味着没有动作监听器和按钮przycisk
源如下:
package Kurs;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class RamkaAnimacjaKola implements ActionListener {
JFrame ramka;
Panel mojPanel;
int x=40;
int y=40;
public void zacznijAnimacje(){
mojPanel = new Panel();
ramka= new JFrame();
JButton przycisk= new JButton("repeat");
ramka.getContentPane().add(BorderLayout.SOUTH, przycisk);
przycisk.addActionListener(this);
ramka.getContentPane().add(BorderLayout.CENTER, mojPanel);
ramka.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ramka.setSize(300, 300);
ramka.setVisible(true);
for (int i=0 ; i <40 ;i++){
x++;
ramka.repaint();
try{
Thread.sleep(50);
} catch (Exception ex){ }
}
for (int i=0 ; i <40 ;i++){
y++;
ramka.repaint();
try{
Thread.sleep(50);
} catch (Exception ex){ }
}
for (int i=0 ; i <40 ;i++){
x--;
ramka.repaint();
try{
Thread.sleep(50);
} catch (Exception ex){ }
}
for (int i=0 ; i <40 ;i++){
y--;
ramka.repaint();
try{
Thread.sleep(50);
} catch (Exception ex){ }
}
}
public void actionPerformed(ActionEvent zdarzenie) {
RamkaAnimacjaKola mojeGUI= new RamkaAnimacjaKola();
mojeGUI.zacznijAnimacje();
}
class Panel extends JPanel {
public void paintComponent(Graphics g){
g.setColor(Color.green);
g.fillOval(x, y, 40, 40);
}
}
}
我使用我的测试类开始这段代码:
package Kurs;
public class UruchomGUI {
/**
* @param args
*/
public static void main(String[] args) {
RamkaAnimacjaKola mojeGUI = new RamkaAnimacjaKola();
mojeGUI.zacznijAnimacje();
}
}
你能解释一下为什么它不起作用吗?