IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Affichage d'un résultat dans une interface


Sujet :

avec Java

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    315
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 315
    Points : 243
    Points
    243
    Par défaut Affichage d'un résultat dans une interface
    Bonsoir,
    Ci-dessous 3 class : "Initialise" (main), "calcul" et "interface"

    main affiche l'interface, puis lance un calcul
    Pouvez-vous me dire comment afficher le résultat de la variable temp dans le champ text
    Toutes vos suggestions sur ce premier test seront lues avec attention.
    Alain
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class Initialise {
    	public static void main(String[] args) {
     
    		new Interface();
     
    		Thread thread = new calcul();
    		thread.run();
     
    	}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    import java.awt.Dimension;
    import java.awt.FlowLayout;
     
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
     
    public class Interface extends JFrame {
    	/**
             * 
             */
    	private static final long serialVersionUID = 1L;
     
    	Interface() {
    		super("Interface");
    		setSize(new Dimension(400, 100));
     
    		JPanel pan = new JPanel();
    		FlowLayout bl = new FlowLayout(FlowLayout.CENTER);
    		pan.setLayout(bl);
     
    		JLabel lab = new JLabel("calcul");
     
    		JTextField text = new JTextField();
    		text.setPreferredSize(new Dimension(100, 20));
     
    		pan.add(lab);
    		pan.add(text);
     
    		setContentPane(pan);
    		setVisible(true);
     
    		// opération par défaut à la fermeture
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    import java.util.Random;
     
    import javax.swing.JLabel;
     
    public class calcul extends Thread {
     
    	public void run() {
     
    		float temp = 10;
     
    		while (true) {
    			try {
     
    				int n = 2000;
    				System.out.println("ma tache \ntemporisation de " + n / 1000
    						+ " secondes");
    				Thread.sleep(n); // Attend n secondes
     
    				System.out.println("fin de la tache");
    				System.out.println("un résultat = " + tache(temp) + "\r");
     
    				JLabel lab = new JLabel("Bonjour le monde!!"); // créé un label
     
    				Thread.sleep(n); // Attend n secondes
     
    			} catch (InterruptedException exception) {
    			}
    		}
    	}
     
    	private static float tache(float temp) {
     
    		int signe;
    		// System.out.println("temp = " + temp);
     
    		// + ou - aléatoirement
    		signe = 1;
    		if (Math.random() < 0.5) {
    			signe = -1;
    		}
     
    		// variation entre 0.1 et 0.99
    		Random rand = new Random();
    		float variation = rand.nextFloat();
     
    		// Arrondir la valeur a 10^-2
    		temp = temp + (variation * signe);
    		temp *= 100.0;
    		temp = (float) Math.floor(temp + 0.5);
    		temp /= 100.0;
     
    		return temp;
    	}
    }

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Y a du travail.

    Le plus simple:

    une méthode setResultat(float) a créer dans la classe interface et le TextField à passer en champ plutot qu'en variable locale, pour le conserver
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class Interface extends JFrame {
     
    	private static final long serialVersionUID = 1L;
               private JTextField text;
     
    	Interface() {
                  //......
                  text = .....
                  //......
                public void setResultat(final float resultat){.........}
    passer l'interface comme paramètre au constructeur de calcul

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Interface inter = new Interface();
    Thread thread = new Calcul(inter);
     
    public class Calcul extends Thread {
         private Interface inter;
         public Calcul(Interface inter){this.inter=inter;}
         //.........
    Appeler la méthode set Resultat dans le calcul:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    inter.setResultat(temp);

    Ouf, premiere partie faite. Maintenant la méthode setResultat. C'est particulier car on ne peux modifier des composant swing QUE depuis le thread EDT, le thread graphique donc. Pas depuis le thread Calcul. Donc pour ça, on demande gentillement au thread graphique de faire un petit boulot pour nous. La méthode setResultat est donc


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void setResultat(final float resultat){
      SwingUtilities.invokeLater(new Runnable(){
          public void run(){
            text.setText("Le resultat est "+resultat);
          }
       });
    }

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    315
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 315
    Points : 243
    Points
    243
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Y a du travail.
    Du travail ? Oui effectivement !
    En qualité de débutant je tâtonne avec les tutoriels* Développez.com, des tests personnels et des réponses bien commentées comme la tienne.
    Grand merci pour ton aide
    Alain

    *le pluriel "tutoriaux" fait encore débat

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème d'affichage du résultat dans une classe qui utilise SNMP
    Par ramzouni dans le forum Débuter avec Java
    Réponses: 0
    Dernier message: 22/05/2009, 01h26
  2. affichage d'un CV dans une interface graphique JAVA
    Par midoscofield dans le forum Documents
    Réponses: 2
    Dernier message: 11/05/2009, 15h05
  3. Affichage de l'heure en temps réel dans une interface
    Par T-MAT dans le forum Interfaces Graphiques
    Réponses: 5
    Dernier message: 26/12/2008, 19h08
  4. [AJAX] Ajax xmlhttpRequest : affichage d'un résultat dans une div
    Par kataboy dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 23/12/2007, 15h47
  5. Affichage des résultats dans une fenêtre
    Par yoyo69 dans le forum MATLAB
    Réponses: 2
    Dernier message: 10/12/2007, 09h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo