Partage
  • Partager sur Facebook
  • Partager sur Twitter

"Liens hypertextes" en java

connecter les pages entre elles

    27 janvier 2009 à 16:11:00

    Bonjour, après avoir lu le tuto de java, je souhaite créer un "programme" médical (débutant hehe)...
    Mon problème pour l'instant c'est que je n'arrive pas à:

    -définir mon mot de passe. La fenêtre s'ouvre avec l'identifiant ainsi que le mot de passe à écrire, mais je ne sais pas comment le "codifier".
    -Une fois que je tombe sur la page d'accueil, j'ai trois boutons:agenda,patients et syndrome. Je souhaite en fait lorsque je clique sur le bouton agenda, ma page change de contenu pour afficher le contenu de agenda.(comme des liens hypertextes)

    Mon code est FAUX lol, need help...hehe...



    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Component;
    import java.awt.Container;
    import java.awt.Dimension;
    import java.awt.FlowLayout;
    import java.awt.Font;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.BufferedReader;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;

    import javax.swing.BorderFactory;
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFormattedTextField;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;

    public class FenetreNA extends JFrame implements ActionListener{

    private JPanel contenu=new JPanel();
    private JPanel corps=new JPanel();
    private JLabel icon;
    private int page;
    private JLabel labelId,labelPass;
    private JLabel message=new JLabel();
    private JFormattedTextField id,pass;
    private JButton bouton;
    JPanel milieu=new JPanel();
    JPanel haut=new JPanel();
    private JScrollPane r;
    JPanel j=new JPanel();
    private JPanel mm = new JPanel();
    private JScrollPane r2;
    private JPanel corps2= new JPanel();
    private JPanel pan;
    //constructeur par défaut
    public FenetreNA(){
    this.setTitle("Bienvenue Docteur Aka...");
    this.setSize(1200, 600);

    initComposant(0);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setLocationRelativeTo(null);
    setResizable(false);
    }


    public void initComposant(int page){

    pan=maPage(page);
    this.setContentPane(pan);
    this.setVisible(true);



    }
    class BoutonListener implements ActionListener{
    public void actionPerformed(ActionEvent e){
    try{
    FileReader fichier=new FileReader(id.getText());
    BufferedReader buff=new BufferedReader(fichier);
    String fin;
    boolean trouve=false;
    while ((fin=buff.readLine())!=null){
    if (fin.equals(pass.getText()))
    trouve=true;
    }
    fichier.close();
    if (trouve){
    page=1;
    initComposant(page);
    //message.setText("Correct !");
    }
    else
    message.setText("Incorrect !");

    }catch (FileNotFoundException args){
    message.setText("L'identifiant est inexistant");
    }catch (IOException args2){
    args2.printStackTrace();
    }
    }

    }

    public JPanel maPage(int page){
    //mon premier contenu
    if (page==0){
    JPanel milieu=new JPanel();
    labelId=new JLabel("Identifiant sil vous plait Docteur: ");
    id=new JFormattedTextField("aka");
    id.setPreferredSize(new Dimension(150,20));
    labelPass=new JLabel("Mot de passe: ");
    pass=new JFormattedTextField();
    pass.setPreferredSize(new Dimension(150,20));
    bouton=new JButton("Connection");

    Font font=new Font("Arial",Font.BOLD,15);
    labelId.setFont(font);
    labelPass.setFont(font);
    labelId.setForeground(Color.black);
    labelPass.setForeground(Color.black);
    bouton.addActionListener(new BoutonListener());//ici j'écoute mon bouton
    message=new JLabel();

    milieu.add(labelId);
    milieu.add(id);
    milieu.add(labelPass);
    milieu.add(pass);
    milieu.add(bouton);
    milieu.add(message);
    mm.setLayout(new BorderLayout());
    mm.add(haut,BorderLayout.NORTH);
    mm.add(milieu,BorderLayout.CENTER);
    //r=new JScrollPane(mm);
    corps.setLayout(new BorderLayout());
    corps.add(mm,BorderLayout.CENTER);
    return corps;
    }

    //Voici l'endroit où je bug...Je cherche à ce que lorsque je clique sur
    //l'icone agenda par exemple, j'atterie sur la page agenda,comme un lien hypertexte.

    if (page==1){
    JPanel Sommaire=new JPanel();

    JButton Agenda = new JButton(new ImageIcon("AGENDA.jpg"));

    JButton Patients = new JButton(new ImageIcon("PATIENTS.jpg"));

    JButton Syndrome = new JButton(new ImageIcon("SYNDROME.jpg"));



    labelId=new JLabel("Comment allez vous aujourd'hui Docteur?");
    corps2.add(labelId,BorderLayout.NORTH);
    Sommaire.add(Agenda);
    Sommaire.add(Patients);
    Sommaire.add(Syndrome);



    corps2.setLayout(new FlowLayout());
    corps2.add(Sommaire,BorderLayout.SOUTH);

    Agenda.addActionListener(AgendaListener());
    Patients.addActionListener(PatientsListener());
    Syndrome.addActionListener( SyndromeListener());

    //je ne sais pas si je peux redefinir des JPanel pour ouvrir les pages dont je souhaite

    class AgendaListener implements ActionListener{

    public void actionPerformed(ActionEvent e) {

    JPanel Agenda=new JPanel();
    JLabel labelAgenda=new JLabel("agenda");

    Agenda.setLayout(new FlowLayout());
    Agenda.add(Agenda,BorderLayout.CENTER);
    }

    }

    class PatientsListener implements ActionListener{


    public void actionPerformed(ActionEvent e) {
    JPanel Patients=new JPanel();
    JLabel labelPatients=new JLabel("patients");

    Patients.setLayout(new FlowLayout());
    Patients.add(Patients,BorderLayout.CENTER);
    }

    }
    class SyndromeListener implements ActionListener{


    public void actionPerformed(ActionEvent arg0) {
    JPanel Syndrome=new JPanel();
    JLabel labelSyndrome=new JLabel("syndrome");

    Syndrome.setLayout(new FlowLayout());
    Syndrome.add(Syndrome,BorderLayout.CENTER);
    }

    }

    return corps2;
    }
    return corps2;


    }




    public static void main(String[] args) {
    FenetreNA fen=new FenetreNA();

    }


    @Override
    public void actionPerformed(ActionEvent arg0) {
    // TODO Auto-generated method stub

    }


    }
    • Partager sur Facebook
    • Partager sur Twitter
      27 janvier 2009 à 17:20:28

      personnellement , je ne lirai le post qu'une fois le code mis dans les balises prévues a cet effet
      (balise qui permettent la mise en forme automatique du code ...)
      <code type="java"> </code>
      


      puis un petit merci ne fait pas de mal =/ (pour ceux qui prendront le temps de lire ton code =/ )
      • Partager sur Facebook
      • Partager sur Twitter
        27 janvier 2009 à 19:08:00

        hehe, merci, je cherchais comment bien mettre le code...En tout cas,merci du temps que vous avez passé sur mon message...

        import java.awt.BorderLayout;
        import java.awt.Color;
        import java.awt.Component;
        import java.awt.Container;
        import java.awt.Dimension;
        import java.awt.FlowLayout;
        import java.awt.Font;
        import java.awt.GridLayout;
        import java.awt.event.ActionEvent;
        import java.awt.event.ActionListener;
        import java.io.BufferedReader;
        import java.io.FileNotFoundException;
        import java.io.FileReader;
        import java.io.IOException;
        
        import javax.swing.BorderFactory;
        import javax.swing.ImageIcon;
        import javax.swing.JButton;
        import javax.swing.JFormattedTextField;
        import javax.swing.JFrame;
        import javax.swing.JLabel;
        import javax.swing.JPanel;
        import javax.swing.JScrollPane;
        import javax.swing.JTextArea;
        
        public class FenetreNA extends JFrame implements ActionListener{
        
        private JPanel contenu=new JPanel();
        private JPanel corps=new JPanel();
        private JLabel icon;
        private int page;
        private JLabel labelId,labelPass;
        private JLabel message=new JLabel();
        private JFormattedTextField id,pass;
        private JButton bouton;
        JPanel milieu=new JPanel();
        JPanel haut=new JPanel();
        private JScrollPane r;
        JPanel j=new JPanel();
        private JPanel mm = new JPanel();
        private JScrollPane r2;
        private JPanel corps2= new JPanel();
        private JPanel pan;
        //constructeur par défaut
        public FenetreNA(){
        this.setTitle("Bienvenue Docteur Aka...");
        this.setSize(1200, 600);
        
        initComposant(0);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setResizable(false);
        }
        
        
        public void initComposant(int page){
        
        pan=maPage(page);
        this.setContentPane(pan);
        this.setVisible(true);
        
        
        
        }
        class BoutonListener implements ActionListener{
        public void actionPerformed(ActionEvent e){
        try{
        FileReader fichier=new FileReader(id.getText());
        BufferedReader buff=new BufferedReader(fichier);
        String fin;
        boolean trouve=false;
        while ((fin=buff.readLine())!=null){
        if (fin.equals(pass.getText()))
        trouve=true;
        }
        fichier.close();
        if (trouve){
        page=1;
        initComposant(page);
        //message.setText("Correct !");
        }
        else
        message.setText("Incorrect !");
        
        }catch (FileNotFoundException args){
        message.setText("L'identifiant est inexistant");
        }catch (IOException args2){
        args2.printStackTrace();
        }
        }
        
        }
        
        public JPanel maPage(int page){
        //mon premier contenu
        if (page==0){
        JPanel milieu=new JPanel();
        labelId=new JLabel("Identifiant sil vous plait Docteur: ");
        id=new JFormattedTextField("aka");
        id.setPreferredSize(new Dimension(150,20));
        labelPass=new JLabel("Mot de passe: ");
        pass=new JFormattedTextField();
        pass.setPreferredSize(new Dimension(150,20));
        bouton=new JButton("Connection");
        
        Font font=new Font("Arial",Font.BOLD,15);
        labelId.setFont(font);
        labelPass.setFont(font);
        labelId.setForeground(Color.black);
        labelPass.setForeground(Color.black);
        bouton.addActionListener(new BoutonListener());//ici j'écoute mon bouton
        message=new JLabel();
        
        milieu.add(labelId);
        milieu.add(id);
        milieu.add(labelPass);
        milieu.add(pass);
        milieu.add(bouton);
        milieu.add(message);
        mm.setLayout(new BorderLayout());
        mm.add(haut,BorderLayout.NORTH);
        mm.add(milieu,BorderLayout.CENTER);
        //r=new JScrollPane(mm);
        corps.setLayout(new BorderLayout());
        corps.add(mm,BorderLayout.CENTER);
        return corps;
        }
        
        //Voici l'endroit où je bug...Je cherche à ce que lorsque je clique sur
        //l'icone agenda par exemple, j'atterie sur la page agenda,comme un lien hypertexte.
        
        if (page==1){
        JPanel Sommaire=new JPanel();
        
        JButton Agenda = new JButton(new ImageIcon("AGENDA.jpg"));
        
        JButton Patients = new JButton(new ImageIcon("PATIENTS.jpg"));
        
        JButton Syndrome = new JButton(new ImageIcon("SYNDROME.jpg"));
        
        
        
        labelId=new JLabel("Comment allez vous aujourd'hui Docteur?");
        corps2.add(labelId,BorderLayout.NORTH);
        Sommaire.add(Agenda);
        Sommaire.add(Patients);
        Sommaire.add(Syndrome);
        
        
        
        corps2.setLayout(new FlowLayout());
        corps2.add(Sommaire,BorderLayout.SOUTH);
        
        Agenda.addActionListener(AgendaListener());
        Patients.addActionListener(PatientsListener());
        Syndrome.addActionListener( SyndromeListener());
        
        //je ne sais pas si je peux redefinir des JPanel pour ouvrir les pages dont je souhaite
        
        class AgendaListener implements ActionListener{
        
        public void actionPerformed(ActionEvent e) {
        
        JPanel Agenda=new JPanel();
        JLabel labelAgenda=new JLabel("agenda");
        
        Agenda.setLayout(new FlowLayout());
        Agenda.add(Agenda,BorderLayout.CENTER);
        }
        
        }
        
        class PatientsListener implements ActionListener{
        
        
        public void actionPerformed(ActionEvent e) {
        JPanel Patients=new JPanel();
        JLabel labelPatients=new JLabel("patients");
        
        Patients.setLayout(new FlowLayout());
        Patients.add(Patients,BorderLayout.CENTER);
        }
        
        }
        class SyndromeListener implements ActionListener{
        
        
        public void actionPerformed(ActionEvent arg0) {
        JPanel Syndrome=new JPanel();
        JLabel labelSyndrome=new JLabel("syndrome");
        
        Syndrome.setLayout(new FlowLayout());
        Syndrome.add(Syndrome,BorderLayout.CENTER);
        }
        
        }
        
        return corps2;
        }
        return corps2;
        
        
        }
        
        
        
        
        public static void main(String[] args) {
        FenetreNA fen=new FenetreNA();
        
        }
        
        
        @Override
        public void actionPerformed(ActionEvent arg0) {
        // TODO Auto-generated method stub
        
        }
        
        
        }
        
        • Partager sur Facebook
        • Partager sur Twitter
          28 janvier 2009 à 23:47:24

          J'ai pas lu ton code, mais dans l'absolu, l'idée serait que t'est un container qui contient une méhtode qui affiche des trucs dedans et qui prend en paramètre "une page" j'ai envie de dire.
          Une fois que l'utilisateur clique sur "le lien", tu apelle cette méthode qui pour qu'elle affiche d'autres trucs dans ton Container.
          • Partager sur Facebook
          • Partager sur Twitter
            29 janvier 2009 à 0:47:05

            Alors, j'ai parcouru rapidement ton code et je peux te donner quelques conseils.

            Pour ton password, utilises un JPasswordField, c'est plus adapte au principe de la securite d'un password.

            Ensuite pour verifier les identifiants/password, tu pourrais faire une HashTable. Le fonctionnement est assez simple, tu introduis d'abbord les identifiants/passwords des personnes autorisees, et apres quand une personne tappe son passwrd et son identifiant, tu envoies ca a la hashtable qui va verifier si les entrees existent. Pour eviter d'avoir a creer la hastable a chaque fois, tu peux la serialiser dans un fichier, et la relire a chaque debut de programme. Comme ca c'est securite maximum :D

            Ensuite pour tes histoires d'agendas, ce que tu peux faire c'est un systeme avec des onglets. Il y a quatres onglets :

            ->connection : actif des le debut, inactif quand on est connecte sur le systeme, ou alors toujours actif avec un bouton DECONNECTION qui apparait une fois connecte

            ->agenda : contient un agenda qui peut etre sous la forme d'un calendrier editable ou ce genre de chose, a toi de voir ce que tu peux creer ou trouver. Toutes les informations sont stockees dans un fichier, et quand tu t'identifies avec succes, le calendrier est remplit avec les infos stockees dans le fichier

            ->patient : Tu as un fichier qui contient une liste de patients avec des informations (cree une classe patient avec pour chacun un nom, une maladie, ce que tu veux). Tu serialise la classe Patient comme ca tu peux recuperer facilement les informations avec la methode readObject de ObjectInputStream..une fois que t'as ton arrayList de Patient, tu fais ta liste avec leur noms. Tu peux par exemple rajouter un bouton information qui ouvre une fenetre avec toutes les informations connues sur le patient selectionne dans la liste

            ->syndrome : comme pour le patient, tu peux faire une classe Syndrome qui a plusieurs attributs : un nom, des symptomes, un mode de guerison? et si tu veux une liste de patients atteints par ce syndrome. Pareil tu peux serialiser et lire quand tu te connecte.

            Pour les patients et syndromes, lorsque tu supprimes un patient de ta liste, tu dois verifier si il a un symptome. Si oui, il faut aller supprimer le patient de la liste des malades dans ta classe symptome. Enfin bref tu as plein d'implementations possibles

            Pour resumer, le plus facile pour toi est d'utiliser des JtabbedPan dont voici l'API

            http://java.sun.com/j2se/1.4.2/docs/ap [...] bbedPane.html

            avant de te lancer dans ton interface, soit sur d'avoir bien prepare toutes les classes concernant ce que tu vas mettre dans ton interface. Ici tu as besoin d'un systeme de calendrier, de Patients, de Syndromes...ne serait t'il pas jusdicieux de creer des classes pour cela?

            VOila voila j'espere que ca t'as un peu aide. Si tu veux que je developpe voir meme que je te fasse un petit tuto pas a pas pour t'aider a faire et a comprendre comment faire ton programme (qui entre parentheses est je trouve tres interessant car il melange acces securise, gestion de fichiers, serialisation et interefaces graphiques semi avances et egalement pas demesure pour un projet ce qui est rare :D generalement c'est : "j'ai commence java depuis deux semaines, je voudrais faire un MMORPG :p ") envoie moi un petit message prive et je te ferai ca. J'ai du temps en ce moment ca ne me derange pas de t'aider :D bin au contraire. Je vois exactement comment faire ton programme, a toi de voir si tu veux une aide complete ou pas :D
            • Partager sur Facebook
            • Partager sur Twitter

            "Liens hypertextes" en java

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown