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); } }

Rispondi quotando