Sto cercando di simulare il movimento di un punto nel piano mediante l'uso di Thread, ma questi non si muove!!
codice:
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;
import javax.swing.undo.*;
import java.util.*;
import java.text.NumberFormat;
import java.util.Locale;
import java.lang.*;
public class BallTest {
public static void main(String argv[]) {
ballFrame frame = new ballFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //quando viene chiuso il frame si esce dal programma
frame.show(); //Visualizza la finestra
}//main
}//BallTest
/**
Crea un frame di ampiezza WIDTH ed altezza HEIGHT, acquisendo la risoluzione video
lo presenta a partire ad 1/4 delle sue coordinate.
*/
class ballFrame extends JFrame{
public ballFrame(){
//prende le dimensioni dello schermo
Toolkit kit = Toolkit.getDefaultToolkit();
//restituisce le dimensioni dello schermo del client come oggetto Dimension
Dimension screenSize = kit.getScreenSize();
int screenHeight = screenSize.height; //ampiezza dello schermo
int screenWidth = screenSize.width;
setSize(WIDTH, HEIGHT); //Inposta la grandezza del frame
setLocation(screenWidth/4, screenHeight/4); //fa partire il frame da 1/4 del video
setResizable(true); //imposta che il frame non può essere ridimensionato
Image img = kit.getImage("grafo.gif"); //imposta l'icona ed il titolo
setIconImage(img);
setTitle("BALLL");
//aggiunge un pannello al frame
Container contentPane = getContentPane();
ballPanel panel = new ballPanel();
contentPane.add(panel);
}//clumpFrame
public static final int WIDTH = 500; //Ampiezza Frame
public static final int HEIGHT = 350; //Altezza Frame
}//ballFrame
class ballPanel extends JPanel implements Runnable {
Thread runner;
int x,y;
public void start() {
if( runner==null ) {
runner=new Thread(this);
runner.start();
}
}
public void stop() {
if( runner!=null ) {
runner.stop();
runner=null;
}
}
public void run() {
int i=0;
for(x=0; x<=255; x++) {
y=x;
repaint();
try { Thread.sleep(100); }
catch( InterruptedException e ) { }
}
}
public void paint(Graphics g) {
g.fillOval(x,y,20,20);
}
}