Java を使用してプログラミングを始めましたが、Swing で 1 つの問題があります。ボタンをクリックした後、楕円形のアニメーションを繰り返したいと思います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();
}
}
なぜうまくいかないのか説明してもらえますか?