Witam. Programuję od niedawna i już kierowałem swoją pomoc na to forum, lecz niestety Moderator bogdans nie dał mi szans spróbowania (dziękuję, że chwilę po odpisaniu przeniosłeś mój temat do Kosza i nie dałeś mi nawet szansy na zmianę nazwy tematu, ani szansy na normalną rozmowę :) ).
Tak więc nadal mój problem jest nierozwiązany, a polega on na tym, że po naciśnięciu JButton mój graficzny obiekt ort! się o jeden pixel i znów muszę wcisnąć JButton, a zależy mi na tym, żeby po jednym wciśnięciu JButton mój obiekt ort! się automatycznie co daną jednostkę czasu w prawo lub w lewo, tak jak zostało to narzucone dalej w programie.
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JButton;
public class TestKulki extends JComponent
{
public int kulka1X = 70;
public int kulka1Y = 40;
public int kulka2X = 70;
public int kulka2Y = 120;
public int kulka3X = 70;
public int kulka3Y = 200;
public int zwrot = 1;
private static final long serialVersionUID = 8261970038837607784L;
public static void main(String[] args)
{
JFrame aplikacja = new JFrame("Kuleczki");
TestKulki droga = new TestKulki();
aplikacja.add(droga);
aplikacja.setSize(400,400);
aplikacja.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
aplikacja.setVisible(true);
}
public void paint(Graphics g)
{
Graphics2D kulka1 = (Graphics2D) g;
Graphics2D kulka2 = (Graphics2D) g;
Graphics2D kulka3 = (Graphics2D) g;
kulka1.setColor(Color.BLUE);
kulka1.fillOval(kulka1X, kulka1Y, 30, 30);
kulka2.setColor(Color.YELLOW);
kulka2.fillOval(kulka2X, kulka2Y, 30, 30);
kulka3.setColor(Color.GREEN);
kulka3.fillOval(kulka3X, kulka3Y, 30, 30);
JButton ruch = new JButton ("Ruch");
add(ruch);
ruch.setBounds(70, 270, 100, 20);
ruch.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
javax.swing.Timer timer=new javax.swing.Timer(100,new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
}
});
if(kulka1X<100)
{
timer.start();
kulka1X = kulka1X + zwrot;
repaint();
}
else if(kulka2X<90)
{
timer.start();
kulka2X = kulka2X + zwrot;
repaint();
}
else if(kulka3X>30)
{
timer.start();
kulka3X = kulka3X - zwrot;
repaint();
}
timer.start();
}
});
}
}