Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 29

Discussione: [java] thread & applet

  1. #1

    [java] thread & applet

    Ho appena finito di studiarmi il manuale del java e non mi sono chiare alcune cose dei due argomenti del titolo.

    Inanzi tutto riguardo agli applet. Quali elementi posso utilizzare per avere un output in essa? solo gli elementi graphics?
    Altrimenti che altro posso utilizzare?

    A riguardo degli applet sapete linkarmi una guida che ne spiegi le varie funzioni? (anche in inglese va bene).

    Un altro argomento è quello dei thread, gli ho visti utilizzare sia con l'extends TimerTask tramite la definizione "private Timer timer = new Timer();" e gli ho visti utilizzati in un esempio di applet tramite l'implements Runnable con la definizione "private Thread updateThread;".

    Quello che vorrei sapere io qual'è la definizione generale? mi potreste fare un esempio di codice funzionante di un thread che tramite schedule esegua un determinato pezzo di codice ogni tot secondi?

    Anche per i thread potreste linkarmi una buona guida (anche in inglese) in modo da approfondirli?

    Un altra cosa, sapete se esiste un sito contenente i sorgenti di programmi più o meno semplici in java che utilizzino funzioni di vario genere e che siano commentati? perchè vorrei studiarmi un pò di programmi già esistenti per consolidare le mie conoscenze (in particolare mi interessava qualcosa sui socket et simila..)

    Vi ringrazio in anticipo,
    Guylmaster.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Per quanto riguarda le guide che cerchi, credo che la documentazione Java sia la risorsa più importante e completa che tu possa trovare. Basta andare qui: http://java.sun.com/j2se/1.4.2/docs/api

    Per avere un output su di un'applet, puoi utilizzare qualsiasi elemento grafico: Label innanzitutto, TxtArea, TextField... trovi tutto sulla documentazione linkata prima.

    Per avere ulteriori guire/manuali/libri, puoi affidarti sempre alla rete: trovi un sacco di manuali e libri, tra cui spiccano "MokaBook" (www.mokabyte.it), "Java, mattone dopo mattone" (cerca con Google), "Thinking in Java" (anche questo lo trovi con Google). Li puoi tutti scaricare liberamente e gratuitamente (quello di MokaByte richiede una registrazione gratuita, ma è ottimo).

    Esempi di codice Java ne trovi fin che vuoi su internet. Anche qui, Google e la tua fantasia trovano l'impossibile.

    Per i Thread, ci sono tanti modi per crearli. Alcuni li hai già visti da solo, ma credo che il modo più semplice, intuitivo e veloce sia quello di estendere direttamente la classe Thread. Un esempio, che scrive un numero a caso ogni 5 secondi (e termina dopo 20 secondi) è il seguente:
    codice:
    public class NumeriACaso extends Thread {
    
       public NumeriACaso() {
    
       /* Questo metodo rappresenta ciò che verrà eseguito dal Thread.
        * Basta sottoporlo ad override, come in questo esempio, ed
        * il gioco è fatto.
        */
       public void run() {
          int timer = 0;
          try {
             while (timer < 20) {
                sleep(5000);
                System.out.println( Math.random() );
                timer += 5;
             }
          } catch (InterruptedException ie) { ie.printStackTrace(); }
       }
    
       public static void main(String [] args) {
          NumeriACaso nac = new NumeriACaso();
          nac.start();
       }
    }
    In alternativa, per avere pezzi di codice, puoi utilizzare la ricerca di questo forum. Ne trovi a bizzeffe, sopratutto per quanto riguarda l'utilizzo delle Socket.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Originariamente inviato da LeleFT
    Per quanto riguarda le guide che cerchi, credo che la documentazione Java sia la risorsa più importante e completa che tu possa trovare. Basta andare qui: http://java.sun.com/j2se/1.4.2/docs/api

    Per avere un output su di un'applet, puoi utilizzare qualsiasi elemento grafico: Label innanzitutto, TxtArea, TextField... trovi tutto sulla documentazione linkata prima.

    Per avere ulteriori guire/manuali/libri, puoi affidarti sempre alla rete: trovi un sacco di manuali e libri, tra cui spiccano "MokaBook" (www.mokabyte.it), "Java, mattone dopo mattone" (cerca con Google), "Thinking in Java" (anche questo lo trovi con Google). Li puoi tutti scaricare liberamente e gratuitamente (quello di MokaByte richiede una registrazione gratuita, ma è ottimo).

    Esempi di codice Java ne trovi fin che vuoi su internet. Anche qui, Google e la tua fantasia trovano l'impossibile.

    Per i Thread, ci sono tanti modi per crearli. Alcuni li hai già visti da solo, ma credo che il modo più semplice, intuitivo e veloce sia quello di estendere direttamente la classe Thread. Un esempio, che scrive un numero a caso ogni 5 secondi (e termina dopo 20 secondi) è il seguente:
    codice:
    public class NumeriACaso extends Thread {
    
       public NumeriACaso() {
    
       /* Questo metodo rappresenta ciò che verrà eseguito dal Thread.
        * Basta sottoporlo ad override, come in questo esempio, ed
        * il gioco è fatto.
        */
       public void run() {
          int timer = 0;
          try {
             while (timer < 20) {
                sleep(5000);
                System.out.println( Math.random() );
                timer += 5;
             }
          } catch (InterruptedException ie) { ie.printStackTrace(); }
       }
    
       public static void main(String [] args) {
          NumeriACaso nac = new NumeriACaso();
          nac.start();
       }
    }
    In alternativa, per avere pezzi di codice, puoi utilizzare la ricerca di questo forum. Ne trovi a bizzeffe, sopratutto per quanto riguarda l'utilizzo delle Socket.


    Ciao.

    Grazie mille, appena ho un pò di tempo provo un pò delle cose che mi hai dato e ti dico.

    Volevo chiederti una cosa riguardo alle applet, tenendo conto che come ti ho già datto non ho dato ancora uno sguardo alle guide: Ho creato questo programma che sfrutta gli elementi JTextField e JLabel modificando un esempio del libro ma come risultato mi da una pagina bianca. In cosa sbaglio? sicuramente sbaglio qualcosa ma cosa? devo creare anche nell'applet la nonrmale JFrame e fare il classico Show della finestra?

    Attendo info

    Grazie mille,
    Guylmaster.


    codice:
    import java.awt.Graphics;
    import java.io.PrintStream;
    import javax.swing.*;
    
    public class applet extends JApplet
    {
    
        public applet()
        {
        }
    
        public void paint(Graphics g)
        {
        }
    
        public void init()
        {
            byte byte0 = 40;
            System.out.println("prova");
            JTextField jtextfield = new JTextField(byte0);
            JLabel jlabel = new JLabel("scritta");
            add(jtextfield);
            add(jlabel);
        }
    }

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Questo è il codice funzionante. Se non hai nessuna intenzione di riscrivere il metodo paint() e nel costruttore non fai nulla, puoi anche non scriverli. Anzi, se non hai intensione di ridefinire il metodo paint() non lo devi inserire, altrimenti non ti visualizza nulla. Inoltre non ho capito perchè hai importato l'oggetto PrintStream del package java.io se poi non hai usato nessun oggetto (che tra l'altro non puoi utilizzare all'interno di un'applet, in modo così semplice).
    Se volevi riferirti al System.out.println(), la classe System fa parte del package java.lang che viene importato per default sempre.
    codice:
    import javax.swing.*;
    
    public class applet extends JApplet
    {
    
        private JTextField jtextfield;
        private JLabel jlabel;
    
        public void init()
        {
            byte byte0 = 40;
            System.out.println("prova");
            jtextfield = new JTextField();
            jlabel = new JLabel("scritta");
            getContentPane().setLayout( new java.awt.GridLayout(2, 1) );
            getContentPane().add(jtextfield);
            getContentPane().add(jlabel);
        }
    }
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Originariamente inviato da LeleFT
    Questo è il codice funzionante. Se non hai nessuna intenzione di riscrivere il metodo paint() e nel costruttore non fai nulla, puoi anche non scriverli. Anzi, se non hai intensione di ridefinire il metodo paint() non lo devi inserire, altrimenti non ti visualizza nulla. Inoltre non ho capito perchè hai importato l'oggetto PrintStream del package java.io se poi non hai usato nessun oggetto (che tra l'altro non puoi utilizzare all'interno di un'applet, in modo così semplice).
    Se volevi riferirti al System.out.println(), la classe System fa parte del package java.lang che viene importato per default sempre.
    codice:
    import javax.swing.*;
    
    public class applet extends JApplet
    {
    
        private JTextField jtextfield;
        private JLabel jlabel;
    
        public void init()
        {
            byte byte0 = 40;
            System.out.println("prova");
            jtextfield = new JTextField();
            jlabel = new JLabel("scritta");
            getContentPane().setLayout( new java.awt.GridLayout(2, 1) );
            getContentPane().add(jtextfield);
            getContentPane().add(jlabel);
        }
    }
    Ciao.
    Anche con il tuo esempio non mi visualizza nessun oggetto, di nuovo un rettangolino bianco.. eppure il codice me lo hai scritto tu.

    Per richiamarlo uso il seguente codice ma non credo di aver sbagliato nulla qui:

    codice:
    <applet code="applet.class"
    		width=200 height=40
    	>
    	</applet>
    P.S: Poi per i thread sono riuscito a capire senza troppi problemi, MokaBook lo conoscevo già.

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    un rettangolo bianco?
    Sei sicuro di avere la JVM installata? Fai una prova: vai su

    www.java.com

    e vedi se riesci a vedere la tazza di caffè sulla destra.

    Se non la vedi potrebbe essere sintomo di una non corretta installazione. Clicka sul link di download e segui le istruzioni.

    Se invece stai usando internet explorer e hai già visitato pagine con applet e tutto apparentemente funziona, allora potresti avere installata la JVM di Microsoft, che non è quella ufficiale (e di cui tra l'altro, se non sbaglio, è stata sospesa l'aggiornamento PRIMA dell'introduzione di swing, per cui una JApplet non verrà mai e poi mai caricata dalla virtual machine di microsoft). In questo caso la scelta sta a te: ho installi la nuova JVM, ufficiale e regolarmente patchata, quindi più sicura, oppure cambi browser e ci installi la JVM solo per quel browser.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  7. #7
    Originariamente inviato da Andrea1979
    un rettangolo bianco?
    Sei sicuro di avere la JVM installata? Fai una prova: vai su

    www.java.com

    e vedi se riesci a vedere la tazza di caffè sulla destra.

    Se non la vedi potrebbe essere sintomo di una non corretta installazione. Clicka sul link di download e segui le istruzioni.

    Se invece stai usando internet explorer e hai già visitato pagine con applet e tutto apparentemente funziona, allora potresti avere installata la JVM di Microsoft, che non è quella ufficiale (e di cui tra l'altro, se non sbaglio, è stata sospesa l'aggiornamento PRIMA dell'introduzione di swing, per cui una JApplet non verrà mai e poi mai caricata dalla virtual machine di microsoft). In questo caso la scelta sta a te: ho installi la nuova JVM, ufficiale e regolarmente patchata, quindi più sicura, oppure cambi browser e ci installi la JVM solo per quel browser.
    No uso FireFox e l'applet parte e solo che mostra solo una finestra bianca.
    Su Ie invece come hai detto tu non parte propio e visualizza una x rossa su sfondo grigio.

    Per la tazza di caffè comunque intendevi quella nella barra degli strumenti? se è quella me ne appare una ogni volta che lancio un applet o un qualsiasi programma java.

    In ogni caso.. se visualizza lo sfondo bianco significa che parte, allora perchè lo sfondo e bianco? non dovrebbe visualizzare una scritta + un campo stile form? a te lo fa?

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    no, io la vedo correttamente

    Nel mio caso, l'applet è 300 per 300
    Immagini allegate Immagini allegate
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Io l'ho provata con AppletViewer... basta che vai al prompt dei comandi, nella posizione dove hai il file .html che dovrebbe far partire l'applet e digiti la seguente riga di codice:
    codice:
    appletviewer nomefile.html
    appletviewer è un comando messo a disposizione dalla JDK che serve a visualizzaer le applet senza dover avviare il browser. Molto utile quando il browser non è configurato per adoperare la JRE della Sun, ma la Microsoft VM (per default).


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  10. #10
    Originariamente inviato da Andrea1979
    no, io la vedo correttamente

    Nel mio caso, l'applet è 300 per 300
    Umm in questo caso visto che anch'io uso Mozilla FireFox, non è che mi passi il link per scaricare la JVM per quel browser? ancora l'ho installata male o ci vuole una versione aggiornata non so.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.