package temp;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.JApplet;
import javax.swing.JComponent;
import javax.swing.JFrame;
public class aplecik extends JApplet {
public static JFrame okno;
public static Timer timer5;
public static temp.mojkomponent obiektA;
public void initComponents(){
okno = new JFrame();
obiektA = new temp.mojkomponent();
}
public void start(){
initComponents();
add(obiektA);
timer5 = new Timer(); wywolaj timer5_task = new wywolaj(); timer5.schedule (timer5_task, 0, 10);
}
}
class wywolaj extends TimerTask{
@Override public void run() {
aplecik.obiektA.zmienPozycje();
}
}
class mojkomponent extends JComponent {
public mojkomponent (){
setSize(200,200);
this.addMouseMotionListener(new MouseAdapter() {
public void mouseMoved(MouseEvent e){ pozycja(e.getX()); }
});
}
int kierunekRuchu=0; // -1 w lewo 1 w prawo
int pozycjaKwadratu=40;
public void pozycja(int pX){
System.out.println("pozycja");
if (pX<20) {
kierunekRuchu=-1;
} else if (pX>180) {
kierunekRuchu=1;
} else {
kierunekRuchu=0;
}
}
public void zmienPozycje(){
System.out.println("zmienPozycje"+kierunekRuchu);
if (kierunekRuchu==1) {pozycjaKwadratu++;}
if (kierunekRuchu==-1) {pozycjaKwadratu--;}
repaint();
}
@Override public void paintComponent(Graphics g) {
g.setColor(Color.white);
g.fillRect(0, 0, 200, 200);
g.setColor(Color.green);
g.fillRect(pozycjaKwadratu, 30, 20, 20);
}
}
jak rozwiązać ten problem w prostrzy sposób bez tworzenia klasy "wywolaj"