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

2D Java Discussion :

JFreeChart et ThermometerPlot


Sujet :

2D Java

  1. #1
    Membre averti
    Avatar de michelgard
    Homme Profil pro
    Formateur
    Inscrit en
    Mars 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formateur

    Informations forums :
    Inscription : Mars 2015
    Messages : 28
    Billets dans le blog
    3
    Par défaut JFreeChart et ThermometerPlot
    Bonjour,

    Je voudrais faire une appli qui récupère une température dans un fichier en ftp en java.

    J'ai pas de soucis pour récupérer le fichier et son contenu (le fichier est alimenté par un Rasberry PI tous les heures) et pour l'afficher dans un thermomètre avec jFreeChart et ThermometerPlot.
    Mon soucis c'est sur l’esthétique de la fenêtre.
    En 1 je n'arrive pas à définir la taille de mon ThermometerPlot il s'adapte à la taille de ma fenêtre avec les déformations il y a beaucoup de place autour.
    En 2 je voudrais ne voir visible que le thermomètre pas la fenêtre autour.

    J'ai trouvé des exemple d'utilisation de ThermometerPlot mais pas pour faire comme je veux.
    Si vous avez une idée ou une autre solution je suis preneur

    Merci
    Michel

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Pour essayer de virer l'espace autour, modifie la preferredSize du CharPanel (setPreferredSize(new Dimension(largeur, hauteur)), pour contraindre la taille. Si tu fais un pack() sur la fenêtre, elle devrait prendre cette preferredSize. Mais tu auras peut-être de l'espace autour (tout dépend comment le composant est codé et çà on pourra difficilement le changer — il faudrait regarder de près le source pour voir ce qu'on peut redéfinir... Éventuellement, regarder du côté de Steel Series, si ce n'est pas plus simple (et ce sera beaucoup plus joli à priori, bien que je ne suis pas sûr qu'il y ait un thermomètre).

    Ensuite, pour virer les décorations, regarde du côté de la méthode JFrame.setUndecorated() :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    blic static void main(final String args[]) {
        JFrame frame = new JFrame("Titre);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setUndecorated(true); 
        frame.add( /* le ChartPanel */);
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    Mais la fenêtre restera rectangulaire. Si tu veux une fenêtre en forme de thermomètre, c'est possible, mais il faudrait avoir accès à la forme du ThermometerPlot, ce qui est loin d'être sûr.

    EDIT : je viens de jeter un coup d'oeil et cela est peut-être possible en redéfinissant drawOutline(), ce qui permettra de récupérer la shape et de l'appliquer à la forme de la fenêtre.
    Non pas de chance, c'est le rectangle autour. Reste la méthode pas clean de reprendre le code complet de la méthode draw, pour créer la shape par combinaison des différentes parties dessinées, mais ça veut dire qu'il faudra le refaire à chaque mise à jour de la bibliothèque. Il y a bien une autre solution bien bidouille, mais fastidieuse, que je préfère ne pas détailler. La dernière voie serait d'utiliser la transparence de la JFrame, sur les systèmes qui le permettent.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre averti
    Avatar de michelgard
    Homme Profil pro
    Formateur
    Inscrit en
    Mars 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formateur

    Informations forums :
    Inscription : Mars 2015
    Messages : 28
    Billets dans le blog
    3
    Par défaut
    Merci pour toutes ces info je vais voir si je peux faire.

    Ou peut on trouver de la doc sur Steel Series sur le net il y a les possibilités mais j'ai pas encore trouvé de tuto pour l'utilisation.

    Merci

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Je n'ai jamais trouvé grand chose niveau tutoriel complet pour la version SWING (il y a un wiki pour la version web), mais c'est peut-être aussi parce qu'il n'y a pas grand chose à dire. Une recherche de "java steelseries" donne quelques réponses disparates, mais suffisante, avec des snippets (voir par exemple). Il y a le blog Harmonic Code qui résume assez bien aussi ce qu'il faut savoir (mais sans exemple), ou cet article. L’implémentation Swing se trouve ici.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre averti
    Avatar de michelgard
    Homme Profil pro
    Formateur
    Inscrit en
    Mars 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formateur

    Informations forums :
    Inscription : Mars 2015
    Messages : 28
    Billets dans le blog
    3
    Par défaut
    Merci j'avais vu ces sites mais c'est vrai il y a peu d'exemple.

    J'ai téléchargé le ZIP sur HanSolo/SteelSeries-Swing mais j'avoue que je sais pas quoi en faire comment le mettre sur Eclipse. Peut-être dans le dossier plugins ?

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Ce que tu télécharger, ce sont les sources. Soit tu les intègres directement dans ton projet, soit tu en fais un jar que tu mets dans ton projet (puis que tu montes dans le build path), soit tu récupères le jar sur http://mvnrepository.com/artifact/eu...lSeries/3.9.30.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Membre averti
    Avatar de michelgard
    Homme Profil pro
    Formateur
    Inscrit en
    Mars 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formateur

    Informations forums :
    Inscription : Mars 2015
    Messages : 28
    Billets dans le blog
    3
    Par défaut
    Oui avec le .jar c'est mieux pour moi.

    Donc j'en suis la
    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    package ftptemperature;
     
    import org.apache.commons.net.ftp.*;
     
    import java.io.*;
    import java.awt.*;
     
    import javax.swing.*;
     
    import eu.hansolo.steelseries.gauges.Linear;
    import eu.hansolo.steelseries.tools.BackgroundColor;
    import eu.hansolo.steelseries.tools.ColorDef;
    import eu.hansolo.steelseries.tools.FrameDesign;
    import eu.hansolo.steelseries.tools.LcdColor;
    import eu.hansolo.steelseries.tools.Orientation;
     
     
    public class ftptemperature {
     
     
     
    	public static void main(String[] args) throws Exception {
    		String ligne = "";
     
    		FTPClient client = new FTPClient();
    		client.connect("ftp.***.***");
     
    		boolean login = client.login("login", "pass");
     
    		// Quitter le programme si la connexion a échouée
    		if (!login){
    			System.out.println("La connexion à échouée");
    			// Quitter le programme
    			System.exit(0);
    		} 
    		else{
    			System.out.println("La connexion OK");
    		}
    		// Télécharger le fichier
    		String fichier = "temp" ;
    		File fichier2 = new File("Temp_Salon.txt");
     
    		client.enterLocalPassiveMode();
            client.setFileType(FTP.BINARY_FILE_TYPE);
     
            OutputStream outputStream1 = new BufferedOutputStream(new FileOutputStream(fichier2));
            login = client.retrieveFile(fichier, outputStream1);
     
            if (!login){
            	System.out.println("Fichier non trouvé"); 
            	// Quitter le programme
            	System.exit(0);
            } 
            else{
            	System.out.println("Fichier OK");
    	    }
            outputStream1.close();
            client.disconnect();
     
            BufferedReader lecteurAvecBuffer = null;
     
     
            try
              {
        	lecteurAvecBuffer = new BufferedReader(new FileReader("Temp_Salon.txt"));
              }
            catch(FileNotFoundException exc)
              {
        	System.out.println("Erreur d'ouverture");
              }
           // while ((ligne = lecteurAvecBuffer.readLine()) != null)
            ligne = lecteurAvecBuffer.readLine();
            System.out.println(ligne);
            ligne = ligne.substring(0, 4);
            lecteurAvecBuffer.close();
     
            Fen1 fen = new Fen1(ligne);
    		fen.setVisible(true);
    	}
    }
    class Fen1 extends JFrame {
    	public Fen1(String ligne){
     
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         // frame.setLocationByPlatform(true);
          setSize(500, 500);
     
          setLayout(new BorderLayout());
          double ligneD = Double.parseDouble(ligne);
     
          Linear gauge = new Linear();
          gauge.setTitle("Salon");
          gauge.setUnitString("°C");
          gauge.setBackgroundColor(BackgroundColor.BEIGE);
          gauge.setFrameVisible(false);
     
          gauge.setLcdColor(LcdColor.GREEN_LCD);
          gauge.setLcdDecimals(1);
          gauge.setLcdUnitString("°C");
          gauge.setLcdUnitStringVisible(true);
          gauge.setLcdVisible(true);
          gauge.setLcdValueAnimated(ligneD);
          gauge.setValueColor(ColorDef.RED);
          gauge.setDigitalFont(true);
          gauge.setMinValue(5);
          gauge.setMaxValue(40);
          gauge.setOrientation(Orientation.VERTICAL);
     
     
          gauge.setValueAnimated(ligneD);
     
          add(gauge);
    	}
    }
    Je me retrouve avec un thermomètre horizontal il veux pas se tourner ?
    Mon afficheur est trop petit
    Et il faut que je rende la fenêtre transparente
    j'avance
    Merci

  8. #8
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Le Linear s'oriente automatiquement (setOrientation(Orientation.VERTICAL) ou setOrientation(Orientation.HORIZONTAL)) au redimensionnement : donc normalement, il suffit que tu donnes une taille moins large que haute pour avoir un linear vertical. Sinon essaye de forcer en appelant. Ta fenêtre étant sans décorations, elle ne sera pas redimensionnement et donc l'orientation devrait être conservée ensuite.

    Pour les fenêtres transparentes tout est expliqué ici : https://docs.oracle.com/javase/tutor...d_windows.html
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. [Compil]Eclipse jfreechart
    Par Jahjouh dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 03/10/2006, 09h14
  2. Réponses: 2
    Dernier message: 22/06/2005, 15h56
  3. [ApplicationFrame][jfreechart]fermeture d'une fenetre
    Par cmoa59 dans le forum Agents de placement/Fenêtres
    Réponses: 32
    Dernier message: 15/06/2005, 10h41
  4. [DisplayTag] [JFreeChart] Unable to reset response before returning exported data
    Par seb_fou dans le forum Taglibs
    Réponses: 2
    Dernier message: 13/09/2004, 09h53
  5. Réponses: 3
    Dernier message: 15/04/2004, 08h44

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