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

 Java Discussion :

Un réveil en Java


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Mai 2012
    Messages : 29
    Par défaut Un réveil en Java
    Bonjour le monde
    Depuis un petit moment je cherche à créer un réveil, qui sans doute va me servir à améliorer ma connaissance dans le langage Java.
    J'ai trouvé des choses intéressantes sur Alarm clock, mais je n'ai pas trouvé ce que je veux réellement.

    Le programme que je cherche à faire est simple,
    nous avons une heure local sous un JtextField et j'aimerais vous demander, comment je pourrais m'y prendre pour ouvrir une Fenêtre d'alerte sous ( JOptionPane.showMessageDialog ) en m'alertant l'heure que j'aurais programmer à l'intérieur d'un autres JTextField.

    D'avance merci


    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
    import java.awt.*;
    import java.awt.event.*;
    import java.text.SimpleDateFormat;
    import javax.swing.*;
    import java.util.*;
     
    public class Horloge extends JFrame implements ActionListener {
     
    	private JTextField jtextTime, JTF1;
    	private JButton BTN1;
    	private JLabel JL1;
     
    	public Horloge (){
    		super("Horloge");
     
    		setSize(350, 200);
    		setLocation(500, 0);
    		setAlwaysOnTop(true);
    		setResizable(false);
    		setLayout(null);
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    ////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////
     
            jtextTime = new JTextField("Horloge", 10);
            jtextTime.setEditable(false);
            jtextTime.setFont(new Font("sansserif", Font.PLAIN, 35));
            jtextTime.setBounds(85, 10 ,150, 35);
            jtextTime.setBorder(BorderFactory.createMatteBorder(2,2,2,2,Color.black));
            javax.swing.Timer t = new javax.swing.Timer(1000, new ClockListener());
            t.start();
     
            add(jtextTime);
     
    ////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////
     
            BTN1 = new JButton("Alarm");
            BTN1.setBounds(50, 50, 85, 25);
            BTN1.addActionListener(this);
            add(BTN1);
     
            JTF1 = new JTextField();
            JTF1.setBounds(180, 50, 85, 25);
            add(JTF1);
     
            JL1 = new JLabel("00:00:00");
            JL1.setBounds(70, 75, 200, 75);
            JL1.setFont(new Font("sansserif", Font.PLAIN, 50));
            JL1.setForeground(Color.blue);
            add(JL1);
     
    ////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////
     
    		setVisible(true);
    	}
     
    	public static void main(String[] args) {
    		new Horloge();
     
    	}
        class ClockListener implements ActionListener {
            public void actionPerformed(ActionEvent e) {
                SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");
                jtextTime.setText(" "+ df.format(Calendar.getInstance().getTime()));
            }
        }
    	@Override
    	public void actionPerformed(ActionEvent e) {
            if(e.getSource() == BTN1)
             {
    		JL1.setText(JTF1.getText());
     
    	}
            if(jtextTime == JTF1)
            {
            	JOptionPane.showMessageDialog(null, "Alarme, il est : "+JL1);
            }
    	}
    }

  2. #2
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Par défaut
    Bonjour,

    D'intuition pour l'idée, un Thread, tu vas augmenter tes connaissances :p.
    Le principe tu as ton réveil et dans un sous processus un Thread où tu fais une boucle infinie qui fait la vérif si TextHeureLocal == TextHeurePredefini stop le tout et afficher la boite.

    Pour l'argumentation de mon idée, ce n'est pas un gros traitement donc niveau consommation ça devrait le faire. comparer 2 strings et lancer la boite au bon moment je ne vois qu'une vérif permanente en boucle while.
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  3. #3
    Membre averti
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Mai 2012
    Messages : 29
    Par défaut
    Salut XxArchangexX

    J'aimerais un peu plus d'information au sujet de votre idée, comment je pourrais inter réagir avec le JButton dans la class UnThread ?

    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
    import javax.swing.*;
     
    public class UnThread extends Thread{
     
    	String TextHeureLocal     = null;
    	String TextHeurePredefini = null;
     
    public void run(){
     
    	  while(TextHeureLocal == TextHeurePredefini)
    	  {
    		  JOptionPane.showMessageDialog(null, "Message INTERNE");
    		  if(TextHeureLocal == TextHeurePredefini)break;
    	  }
    	  JOptionPane.showMessageDialog(null, "Message EXTERNE");
       }	
    }

  4. #4
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Par défaut
    Bonjour,

    Alors, une fois que l'utilisateur rempli le JTextField de l'alarme, il clique sur le bouton et sa démarre le thread, qui fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    while ( heureReel != heureAlarme)
    {
         if(TextHeureLocal == TextHeurePredefini)break;
    }
    JOptionPane.showMessageDialog(null, "Message EXTERNE");
    Ainsi au moment ou les heures sont égales sa affiche le message, dans le programme principale tu pourrais faire un autre bouton stopalarm ou le même bouton pour faire stopper le Thread.
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  5. #5
    Membre averti
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Mai 2012
    Messages : 29
    Par défaut
    Re bonjour le monde.
    Pouvez me dire ce qui ne va pas dans ma boucle ou bien de m'expliquer les erreurs que j'ai pu faire.
    J'essaye depuis un bon moment d'interrompe cette boucle et je n'arrive pas.
    D'avance merci.

    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
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import javax.swing.JOptionPane;
     
    public class Test 
    {
    	static String heureReel, heureAlarme, TextHeureLocal, TextHeurePredefini ;
     
    	public Test()
    	{	
    		heureReel          = null;
    		heureAlarme        = null;
    		TextHeureLocal     = null;
    		TextHeurePredefini = null;
    	}
     
     
    	public static void main(String[] args) 
    	{
    		heureAlarme = JOptionPane.showInputDialog(null, "Entrez Votre Alarme");
     
    		while( heureReel != heureAlarme)
    		{
     
    			SimpleDateFormat formater = null;
    			Date aujourdhui = new Date();
    			formater = new SimpleDateFormat("H:mm:ss");
    			heureReel = formater.format(aujourdhui).toString();
     
    			System.out.println(heureReel + " = " + heureAlarme);
     
    			TextHeureLocal = heureReel.toString();
    			TextHeurePredefini = heureAlarme.toString();
     
    			if(TextHeureLocal == TextHeurePredefini)break;
    		     try {
    		         // pause
    		         Thread.sleep(1000);
    		       }
    		       catch (InterruptedException ex) {}
     
    		}
    		JOptionPane.showMessageDialog(null, "Message EXTERNE");
    	}
    }

  6. #6
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Par défaut
    Bonsoir,

    String est un Objet pas un type donc le != compare les adresses mémoires,

    pour comparer le contenu du pointeur c'est heureReel.equals(heureAlarme) sa devrais mieux fonctionner.

    Remarque : c'est le même principe tu peux comparer des int avec le != ou le = mais pas des Integer il faut faire equals ou Integer.intValue()

    Ceux qui disent qu'il n'y a pas besoin de faire du C pour faire du java .
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  7. #7
    Membre confirmé
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2012
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 57
    Par défaut
    Citation Envoyé par XxArchangexX Voir le message
    Bonjour,

    Alors, une fois que l'utilisateur rempli le JTextField de l'alarme, il clique sur le bouton et sa démarre le thread, qui fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    while ( heureReel != heureAlarme)
    {
         if(TextHeureLocal == TextHeurePredefini)break;
    }
    JOptionPane.showMessageDialog(null, "Message EXTERNE");
    Ainsi au moment ou les heures sont égales sa affiche le message, dans le programme principale tu pourrais faire un autre bouton stopalarm ou le même bouton pour faire stopper le Thread.
    Bonjour,

    Je suis étudiant et je m'intéresse beaucoup au langage Java, de ce fait, je parcours un peu le forum afin d'en apprendre toujours plus.
    En voyant votre message une question m'est venue à l'esprit:
    ne serait-il pas plus "sécuritaire" de faire quelque chose comme ceci?:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    while ( heureReel.before(heureAlarme))
    {
         if(DateHeureLocal.compareTo(DateHeurePredefini)>=0)
                 break;
    }
    JOptionPane.showMessageDialog(null, "Message EXTERNE");
    Et donc avoir des Objets Date, plutôt que des String.
    Je veux dire, si pour une raison ou pour une autre l'application/l'ordinateur freeze pendant 1~2sec, juste avant l'heure d'alarme. Est-ce que la boite de dialogue s'ouvrira quand même ou le Thread restera-t-il bloqué dans la boucle while?


    Merci d'avance,


    PS: Désolé si ma question est un peu Hors-Sujet.

  8. #8
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 096
    Par défaut
    Pourquoi ne pas tout simplement faire

    Au moment ou on règle l'heure de l'alarme, faire le décompte du temps restant avant l'alarme mettre une pause de ce temps et voila. (ou utiliser un timer qui se déclenche une seule fois).
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. le Java est la continuité du C++ ???
    Par Vincent PETIT dans le forum Débats sur le développement - Le Best Of
    Réponses: 33
    Dernier message: 25/08/2005, 20h17
  2. Envoi de Datagrames par IP en JAVA
    Par the java lover dans le forum Développement
    Réponses: 2
    Dernier message: 14/08/2002, 11h44
  3. directx et java?? possible??
    Par jiraiya dans le forum DirectX
    Réponses: 3
    Dernier message: 09/07/2002, 19h55
  4. webcam : lire sur un port usb en c/c++ ou java. sous win. ?
    Par flo007 dans le forum Choisir un environnement de développement
    Réponses: 2
    Dernier message: 24/05/2002, 23h24
  5. Service de nommage java C++
    Par Anonymous dans le forum CORBA
    Réponses: 3
    Dernier message: 15/04/2002, 12h48

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