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

Interfaces Graphiques en Java Discussion :

ajouter la date et l'heure actuel dans une fenêtre qui contient un tableau datafile


Sujet :

Interfaces Graphiques en Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 9
    Points : 2
    Points
    2
    Par défaut ajouter la date et l'heure actuel dans une fenêtre qui contient un tableau datafile
    Bonjour, je voudrai intégré la date et l'heure dans une fenêtre courante qui contient un tableau lu à partir d'un fichier voici le programme java du tableau :

    [DataFileTableModel.java]
    Code java : 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
    import javax.swing.*;
    import javax.swing.table.*;
    import javax.swing.event.*;
    import java.io.*;
    import java.util.*;
     
    public class DataFileTableModel extends AbstractTableModel {
     
        protected Vector data;
        protected Vector columnNames ;
        protected String datafile;
     
        public DataFileTableModel(String f){
            datafile = f;
            initVectors();
        }
     
        public void initVectors() {
     
            String aLine ;
            data = new Vector();
            columnNames = new Vector();
     
            try {
                FileInputStream fin =  new FileInputStream(datafile);
                BufferedReader br = new BufferedReader(new InputStreamReader(fin));
                // extract column names
                StringTokenizer st1 =
                        new StringTokenizer(br.readLine(), "|");
                while(st1.hasMoreTokens())
                    columnNames.addElement(st1.nextToken());
                // extract data
                while ((aLine = br.readLine()) != null) {
                    StringTokenizer st2 =
                            new StringTokenizer(aLine, "|");
                    while(st2.hasMoreTokens())
                        data.addElement(st2.nextToken());
                }
                br.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
     
        public int getRowCount() {
            return data.size() / getColumnCount();
        }
     
        public int getColumnCount(){
            return columnNames.size();
        }
     
        public String getColumnName(int columnIndex) {
            String colName = "";
     
            if (columnIndex <= getColumnCount())
                colName = (String)columnNames.elementAt(columnIndex);
     
            return colName;
        }
     
        public Class getColumnClass(int columnIndex){
            return String.class;
        }
     
        public boolean isCellEditable(int rowIndex, int columnIndex) {
            return false;
        }
     
        public Object getValueAt(int rowIndex, int columnIndex) {
            return (String)data.elementAt( (rowIndex * getColumnCount()) + columnIndex);
        }
     
        public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
            return;
        }
    }

    [DataFileTable.java]
    Code java : 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 javax.swing.*;
    import java.awt.event.*;
    import java.awt.*;
    import java.io.*;
    import java.util.*;
     
    public class DataFileTable extends JPanel {
        public DataFileTable(String dataFilePath) {
            JTable table;
            DataFileTableModel model;
            Font f;
     
            f = new Font("SanSerif",Font.PLAIN,24);
            setFont(f);
            setLayout(new BorderLayout());
     
            model = new DataFileTableModel(dataFilePath);
     
            table = new JTable();
            table.setModel(model);
            table.createDefaultColumnsFromModel();
     
            JScrollPane scrollpane = new JScrollPane(table);
            add(scrollpane);
        }
     
        public Dimension getPreferredSize(){
            return new Dimension(400, 300);
        }
     
        public static void main(String s[]) {
            JFrame frame = new JFrame("Data File Table");
            DataFileTable panel;
     
            panel = new DataFileTable("customers.dat");
     
            frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
            frame.setForeground(Color.black);
            frame.setBackground(Color.lightGray);
            frame.getContentPane().add(panel,"Center");
     
            frame.setSize(panel.getPreferredSize());
            frame.setVisible(true);
            frame.addWindowListener(new WindowCloser());
        }
    }
     
    class WindowCloser extends WindowAdapter {
        public void windowClosing(WindowEvent e) {
            Window win = e.getWindow();
            win.setVisible(false);
            System.exit(0);
        }
    }

    Merci pour le Help !

  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 : 54
    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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    S'il s'agit d'afficher juste la date et l'heure de manière statique, il suffit d'ajouter dans le DataFilePanel qui affiche la JTable, un autre composant, comme un JLabel par exemple (il faudra peut-être adapter ton layout, ou ajouter un panel intermédiaire selon l'endroit où tu souhaites l'afficher), dont le texte correspond à la date (qu'on obtient avec la classe java.util.Date), formatée comme tu souhaites (à l'aide de java.text.SimpleDateFormat). S'il faut qu'elle se mette à jour de manière continue, il faudra procéder de la même manière, mais en plus modifier le texte du JLabel chaque fois que nécessaire (si le format affiche les secondes, changer le texte toutes les secondes, par exemple), en utilisant un Timer par exemple.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Merci pour votre réponse, j'ai essayé de faire ça en rajoutant l'heure et la date pour l'afficher en temps réel mais mon programme plante voici ce que j'ai écris :

    Code java : 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
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Font;
    import java.awt.Window;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
     
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.JTextField;
    import javax.swing.text.JTextComponent;
     
     
    public class DataFileTable extends JFrame {
          private JTextField jtextTime;
          private JTextField jtextDate;
      public DataFileTable(String dataFilePath) {
          jtextTime = new JTextField();
          jtextTime = new JTextField();
          jtextTime.setEditable(false);
          jtextTime.setFont(new Font("sansserif", Font.PLAIN, 20));
          jtextDate = new JTextField();
          jtextDate.setEditable(false);
          jtextDate.setFont(new Font("sansserif", Font.PLAIN, 20));
     
          JPanel content = new JPanel();
           content.add(jtextDate);
            content.add(jtextTime);
    //        frame.setContentPane(content);
          javax.swing.Timer t = new javax.swing.Timer(1000, new ClockListener());
          t.start();
          this.setLocationRelativeTo(null);
          this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          this.setContentPane(content);
        JTable table;
        DataFileTableModel model;
        Font f;
     
        f = new Font("SanSerif",Font.PLAIN,24);
        setFont(f);
     //   setLayout(new BorderLayout());
     
        model = new DataFileTableModel(dataFilePath);
     
        table = new JTable();
        table.setModel(model);
        table.createDefaultColumnsFromModel();
        JPanel pan = new JPanel();
        JScrollPane scrollpane = new JScrollPane(table);
    //    scrollpane.add(button);//Add button 
        add(scrollpane);
        add(pan, BorderLayout.SOUTH);
     
      }
     
     
     
      class ClockListener implements ActionListener {
          public void actionPerformed(ActionEvent e) {
              SimpleDateFormat dh = new SimpleDateFormat("dd/MM/yyyy");
              SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");
              JTextComponent jtextDate = null;
            jtextDate.setText(dh.format(Calendar.getInstance().getTime()));
              JTextComponent jtextTime = null;
            jtextTime.setText(df.format(Calendar.getInstance().getTime()));
          }
      }
     
      public Dimension getPreferredSize(){ 
     
            return new Dimension(400, 300);
            }
     
         public static void main(String s[]) {
             JTextField jtextTime = null;
             JTextField jtextDate = null;
            JFrame frame = new JFrame("Data File Table");
     
     
            DataFileTable panel;
            panel = new DataFileTable("bla.txt");
     
     
     
            frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
    //        frame.getContentPane().add(content, BorderLayout.SOUTH);
            frame.setForeground(Color.black);
            frame.setBackground(Color.lightGray);
            frame.getContentPane().add(panel,"center");
        //    frame.getContentPane().add(content,"center");
     
     
            frame.setSize(panel.getPreferredSize());
            frame.setVisible(true);
            frame.addWindowListener(new WindowCloser());
            }
         }
     
        class WindowCloser extends WindowAdapter {
         public void windowClosing(WindowEvent e) {
           Window win = e.getWindow();
           win.setVisible(false);
           System.exit(0);
            }
     
        }




    voici ce que j'ai comme erreur:

    Exception in thread "main" java.lang.IllegalArgumentException: adding a window to a container
        at java.awt.Container.checkNotAWindow(Unknown Source)
        at java.awt.Container.addImpl(Unknown Source)
        at java.awt.Container.add(Unknown Source)
        at DataFileTable.main(DataFileTable.java:96)
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at DataFileTable$ClockListener.actionPerformed(DataFileTable.java:70)
        at javax.swing.Timer.fireActionPerformed(Unknown Source)
        at javax.swing.Timer$DoPostEvent.run(Unknown Source)
        at java.awt.event.InvocationEvent.dispatch(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$200(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Voici un exemple du fichier pour l'affichage

    Numero|Heure
    A209 | 10:30
    B308 | 11:00
    C206 | 11:30
    D305 | 12:00

  5. #5
    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 : 54
    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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    JTextComponent jtextDate = null;        jtextDate.setText(dh.format(Calendar.getInstance().getTime()));
              JTextComponent jtextTime = null;         jtextTime.setText(df.format(Calendar.getInstance().getTime()));

    Bah, oui, tu déclares une variable jtextDate, sans l'affecter, et tu appelles tout de suite après une méthode : forcément ta variable ne pointe sur aucun objet, et, donc, tu obtiens une NullPointerException.

    Ce sont les variables que tu déclares dans DateFileTable dont il faut changer le texte. Celles-là :
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public class DataFileTable extends JFrame {      private JTextField jtextTime;
          private JTextField jtextDate;
          ...

    Ensuite, pourquoi utiliser des JTextField et les rendre non éditable : un JTextField est un champ de saisie. Je t'ai dit d'utiliser un JLabel. C'est quand même plus logique d'utiliser un composant d'affichage pour afficher, que d'utiliser un champ de saisie et de le rendre non éditable.

    Sinon, simplifies et optimises le code (qui s'exécute dans un Timer), en créant une seule instance de date (par un new Date(), voire même directement en faisant un System.currentTimeMillis()), en la formatant cette même instance/valeur avec les deux formatteurs. Evites également de créer les formats à chaque appel, en les mettant en variables membre de ta classe de ActionListener.

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class ClockListener implements ActionListener {
       SimpleDateFormat dh = new SimpleDateFormat("dd/MM/yyyy");
       SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");
         public void actionPerformed(ActionEvent e) {
            long date = System.currentTimeMillis();
            jtextDate.setText(dh.format(date));
            jtextTime.setText(df.format(date));
       } 
      }

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Merci pour votre réponse, mais je suis toujours un peu perdu ! J'ai utilisé maintenant un JLabel au lieu d'un JTextField mais je n'arrive pas toujours avoir l'affichage désiré ! voici ce que j'ai fait :

    Code java : 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
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Font;
    import java.awt.Window;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.text.SimpleDateFormat;
     
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
     
     
    public class DataFileTable extends JFrame {
          private JLabel jtextTime;
          private JLabel jtextDate;
      public DataFileTable(String dataFilePath) {
          jtextTime = new JLabel ();
          jtextTime.setFont(new Font("sansserif", Font.PLAIN, 20));
          jtextDate = new JLabel ();
          jtextDate.setFont(new Font("sansserif", Font.PLAIN, 20));
     
          JPanel content = new JPanel();
           content.add(jtextDate);
            content.add(jtextTime);
          javax.swing.Timer t = new javax.swing.Timer(1000, new ClockListener());
          t.start();
          this.setLocationRelativeTo(null);
          this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          this.setContentPane(content);
        JTable table;
        DataFileTableModel model;
        Font f;
     
        f = new Font("SanSerif",Font.PLAIN,24);
        setFont(f);
     
        model = new DataFileTableModel(dataFilePath);
     
        table = new JTable();
        table.setModel(model);
        table.createDefaultColumnsFromModel();
        JPanel pan = new JPanel();
        JScrollPane scrollpane = new JScrollPane(table);
        add(scrollpane);
        add(pan, BorderLayout.SOUTH);
     
      }
     
      class ClockListener implements ActionListener {
           SimpleDateFormat dh = new SimpleDateFormat("dd/MM/yyyy");
           SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");
             public void actionPerformed(ActionEvent e) {
                long date = System.currentTimeMillis();
                jtextDate.setText(dh.format(date));
                jtextTime.setText(df.format(date));
           }
      }
     
     
      public Dimension getPreferredSize(){ 
     
            return new Dimension(400, 300);
            }
     
         public static void main(String s[]) {
            JFrame frame = new JFrame("Data File Table");
            DataFileTable panel;
            panel = new DataFileTable("bla.txt");
     
     
     
            frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
            frame.setForeground(Color.black);
            frame.setBackground(Color.lightGray);
            frame.getContentPane().add(panel,"center");
     
     
            frame.setSize(panel.getPreferredSize());
            frame.setVisible(true);
            frame.addWindowListener(new WindowCloser());
            }
         }
     
        class WindowCloser extends WindowAdapter {
         public void windowClosing(WindowEvent e) {
           Window win = e.getWindow();
           win.setVisible(false);
           System.exit(0);
            }
     
        }
    et j'ai le message d'erreur :

    Exception in thread "main" java.lang.IllegalArgumentException: adding a window to a container
        at java.awt.Container.checkNotAWindow(Unknown Source)
        at java.awt.Container.addImpl(Unknown Source)
        at java.awt.Container.add(Unknown Source)
        at DataFileTable.main(DataFileTable.java:103)

  7. #7
    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 : 54
    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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Bah oui, tu as changé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DataFileTable extends JPanel
    en

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DataFileTable extends JFrame
    Tu peux pas mettre une JFrame (fenêtre) dans un panel (composant de fenêtre) : tu ne peux que faire l'inverse, mettre un composant dans une fenêtre. Et, surtout, tu ne peux pas mettre une fenêtre dans une fenêtre.

    Donc, avant tu pouvais ajouter ton instance de DataFileTable dans une fenêtre, maintenant tu ne peux plus. Mais pourquoi avoir changer DateFileTable en JFrame ? On peut mettre des panels dans des panels, au besoin.

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    La question c'est comment rajouter les deux (affichage de l'heure, date et le tableau) dans la même fenêtre ?
    je n'arrive pas toujours à résoudre ce problème?
    Est-ce que vous pouvez m'expliquer pas par pas comment faire car je suis débutant
    Merci d'avance

  9. #9
    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 : 54
    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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    La constitution d'interface graphique utilisateur se fonde toujours sur le même principe : mettre des composants dans des composants. Ceci forme un arbre de composants : à la base, il y a un seul composant, qui racine se placere, par exemple, soit en tant que contentPane d'une JFrame, soit dans le contentPane d'une JFrame, pour pouvoir être affiché.

    Au début, tu as fait une classe qui étendait JPanel dans laquelle tu as mis un JScrollPane dans lequel tu as mis une JTable : tu avais déjà, donc, un arbre. Simplement, il avait une unique branche.

    Dans ce JPanel, que tu as appelé DateFilePanel, en plus du JScrollPane, tu peux mettre autant de composants que tu veux. Mais tu peux aussi mettre un seul composant, un JPanel par exemple, qui contient lui-même 2 composants, 2 JLabel dans ton cas, qui affichent pour l'un la date, pour l'autre l'heure. Un tel arbre, n'aurait plus qu'une seule branche, mais commencerait à avoir une structure multi-branches, qu'on peut symboliser de cette manière :

    • JPanel(DateFilePanel)
      • JPanel
        • JLabel(jtextDate)
        • JLabel(jtextTime)

      • JScrollPane
        • JTable



    On distingue dans les composants utilisables pour constituer un arbre, d'un côté les conteneurs (par exemple un JPanel) et de l'autre les composants qui ne sont pas des conteneurs (ou qui ne sont pas utilisés en général comme conteneur, mais comme composant final, comme un JLabel par exemple) : ces derniers ne peuvent simplement pas contenir d'autres composants. Les conteneurs étant également des composants, ils peuvent être mis dans un autre conteneur, sauf pour un composant de type fenêtre.

    Enfin, pour pouvoir gérer la position et la taille des composants à l'intérieur de leur conteneur, on utilise de préférence un gestionnaire d'agencement (un Layout Manager, en anglais) : la méthode setLayoutManager() de la classe de conteneur. En fonction de tes besoins, il te faudra choisir le layout manager le plus adapté. Ensuite, il ne reste plus qu'a assembler toutes ces parties :


    • Créer un JPanel 1
    • lui affecter un layout manager
      • créer un autre JPanel 2 et le mettre dans le JPanel 1
      • lui affecter un layout manager
        • créer un composant d'affichage de date (JLabel) et le mettre dans JPanel 2
        • créer un composant d'affichage d'heure (JLabel) et le mettre dans JPanel 2

      • créer un JScrollPanel (qui est finalement un peu comme un JPanel, mais qui gère les ascenseurs automatiquement) et le mettre dans JPanel1
        • créer un JTable et le mettre dans le JScrollPanel



    Mais on peut modifier cet arbre, de cette manière :


    • Créer un JPanel 1
    • lui affecter un layout manager
      • créer un autre JPanel 2 et le mettre dans le JPanel 1
      • lui affecter un layout manager
        • créer un composant d'affichage de date (JLabel) et le mettre dans JPanel 2
        • créer un composant d'affichage d'heure (JLabel) et le mettre dans JPanel 2

    • créer un autre JPanel 3 et le mettre dans le JPanel 1
    • lui affecter un layout manager (un BorderLayout par exemple)
      • créer un JTable et mettre son JTableHeader dans JPanel3 (au nord, au sens du border layout)
      • créer un JScrollPanel (qui est finalement un peu comme un JPanel, mais qui gère les ascenseurs automatiquement) et le mettre dans JPanel3 (au centre, au sens du border layout)
        • mettre le JTable dans le JScrollPanel


    On a une structure arborescente similaire. A chaque fois, on a cette structure arborescente similaire. Avec un JPanel en racine de l'arbre qu'il suffit de mettre en content pane de la fenêtre.

  10. #10
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup pour ta réponse je vais suivre les étapes et je te tiens au courant

    A très bientôt

  11. #11
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    J'ai suivi ce que tu m'a conseillé mais j'ai toujours des erreurs de ce type:
    Exception in thread "main" java.lang.NullPointerException
    at DataFileTable.main(DataFileTable.java:170)

    Je te montre le programme :

    Code java : 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
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.FlowLayout;
    import java.awt.Font;
    import java.awt.Window;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.ComponentListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.InputStreamReader;
    import java.text.SimpleDateFormat;
    import java.util.StringTokenizer;
    import java.util.Vector;
     
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.table.AbstractTableModel;
     
     
    public class DataFileTable extends JFrame {
        private JLabel jtextTime;
        private JLabel jtextDate;
        private JTable table;
        public DataFileTable (String dataFilePath){
            JPanel pan1 = new JPanel();
            pan1.setLayout(new FlowLayout());
            JPanel pan2 = new JPanel();
            pan2.setLayout(new FlowLayout());
            pan1.add(pan2);
            jtextTime = new JLabel();
            jtextDate = new JLabel();
            pan2.add(jtextTime);
            pan2.add(jtextDate);
            javax.swing.Timer t = new javax.swing.Timer(1000, new ClockListener());
            t.start();
    //        this.setLocation(null);
    /*
     * creation de la tableau
     */
     
            JTable table;
            table = new JTable();
            DataFileTableModel model;
            Font f;
            f = new Font("SanSerif",Font.PLAIN,24);
            setFont(f);
            setLayout(new BorderLayout());
            model = new DataFileTableModel(dataFilePath);
            table = new JTable();
            table.setModel(model);
            table.createDefaultColumnsFromModel();
            JScrollPane scrollpane = new JScrollPane(table);
            pan1.add(scrollpane);
     
     
     
        }
     
        class ClockListener implements ActionListener {
               SimpleDateFormat dh = new SimpleDateFormat("dd/MM/yyyy");
               SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");
                 public void actionPerformed(ActionEvent e) {
                    long date = System.currentTimeMillis();
                    jtextDate.setText(dh.format(date));
                    jtextTime.setText(df.format(date));
               }
          }
        public Dimension getPreferredSize(){ 
     
            return new Dimension(400, 300);
            }
    /*
     * 
     */
        public class DataFileTableModel extends AbstractTableModel {
     
            protected Vector data;
            protected Vector columnNames ;
            protected String datafile;
     
            public DataFileTableModel(String f){
                datafile = f;
                initVectors();
            }
     
            public void initVectors() {
     
                String aLine ;
                data = new Vector();
                columnNames = new Vector();
     
                try {
                    FileInputStream fin =  new FileInputStream(datafile);
                    BufferedReader br = new BufferedReader(new InputStreamReader(fin));
                    // extract column names
                    StringTokenizer st1 =
                            new StringTokenizer(br.readLine(), " |");
                    while(st1.hasMoreTokens())
                        columnNames.addElement(st1.nextToken());
                    // extract data
                    while ((aLine = br.readLine()) != null) {
                        StringTokenizer st2 =
                                new StringTokenizer(aLine, " |");
                        while(st2.hasMoreTokens())
                            data.addElement(st2.nextToken());
                    }
                    br.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
     
            public int getRowCount() {
                return data.size() / getColumnCount();
            }
     
            public int getColumnCount(){
                return columnNames.size();
            }
     
            public String getColumnName(int columnIndex) {
                String colName = "";
     
                if (columnIndex <= getColumnCount())
                    colName = (String)columnNames.elementAt(columnIndex);
     
                return colName;
            }
     
            public Class getColumnClass(int columnIndex){
                return String.class;
            }
     
            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return false;
            }
     
            public Object getValueAt(int rowIndex, int columnIndex) {
                return (String)data.elementAt( (rowIndex * getColumnCount()) + columnIndex);
            }
     
            public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
                return;
            }
        }
        /*
         * 
         */
         public static void main(String s[]) {
     
            JPanel frame = new JPanel();   
            DataFileTable panel;
            panel = new DataFileTable("bla.txt");
     
     
     
           // frame.setDefaultCloseOperation(JPanel.DO_NOTHING_ON_CLOSE);
    //        frame.getContentPane().add(content, BorderLayout.SOUTH);
            frame.setForeground(Color.black);
            frame.setBackground(Color.lightGray);
          //  frame.getContentPane().add(panel,"center");
            frame.getRootPane().add(panel,"center");
        //    frame.getContentPane().add(content,"center");
     
     
            frame.setSize(panel.getPreferredSize());
            frame.setVisible(true);
          //  frame.addWindowListener(new WindowCloser());
            frame.addComponentListener((ComponentListener) new WindowCloser());
     
            }
         }
     
        class WindowCloser extends WindowAdapter {
         public void windowClosing(WindowEvent e) {
           Window win = e.getWindow();
           win.setVisible(false);
           System.exit(0);
            }
     
        }



    Merci d'avance

  12. #12
    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 : 54
    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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Une NullPointerException est une exception qui survient lorsqu'on appelle une méthode (ou un attribut) sur une référence null (une variable non affectée par exemple). Donc regardes à la ligne 170 de ton code (le numéro de ligne est dans le message d'erreur), quelle variable est null et corrige en fonction.

    Par ailleurs, tu n'as plus de JFrame dans ton code : tu n'afficheras pas ton panel principal sans JFrame. Je n'ai jamais dit de remplacer la JFrame par un JPanel : j'ai dit de créer un nouveau JPanel (principal) dans lequel tu mettras un premier panel avec tes JLabel date et heure et un second (ou plus précisément un JScrollPane), qui contiendra la JTable. Mais ce panel principal, il faut le mettre dans une JFrame, pour l'afficher.

    Et pourquoi chercher à modifier le rootpane ? Pour mettre un JPanel dans un JPanel, il suffit d'appeler la méthode add() du panel parent. En général, lorsqu'on utilise un layout manager, on utilise la méthode add avec 2 paramètres : le premier est le composant qu'on ajoute au JPanel et le second est la contrainte de placement, qui dépend du type de layout manager. On procède comme ça, par exemple, tout simplement :

    Code java : 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
    JPanel panel=new JPanel(); // le panel principal
    panel.setLayoutManager(new BorderLayout());
     
    JPanel panelDate = new JPanel(); // le panel pour la date et l'heure
    panel.add(panelDate, BorderLayout.NORTH); 
     
    panelDate.setLayoutManager(new GridLayout(0,2)); // par exemple, on place la date et l'heure avec une grille de 2 colonnes
    panelDate.add(jtextDate); // jtextDate variable de classe
    panelDate.add(jtextTime); // jtextTime variable de classe
     
    JPanel panelTable = new JPanel(); // le panel pour la table
    panel.add(panelTable, BorderLayout.CENTER); 
     
    panelTable.setLayoutManager(new BorderLayout());
     
    panelTable.add(jtable.getTableHeader(), BorderLayout.NORTH); // la ligne d'entêtes de colonnes au nord
    panelTable.add(new JScrollPane(jtable), BorderLayout.CENTER); // la table au centre, dans un JScrollPane
     
    ...
     
     
    JFrame jframe = new JFrame();
    jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // plus simple que d'utiliser le WindowCloser
    jframe.getContentPane().add(panel); // on met le panel principal dans la frame
    // ou à la rigueur jframe.setContentPane(panel);
     
    ...
     
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);

  13. #13
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Merciiii ça marche !



    et j'ai appris plein de choses ... Merci beaucoup joel.drigo

    A bientôt

  14. #14
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 9
    Points : 2
    Points
    2
    Par défaut Client/serveur
    Bonjour,
    J'ai fais une petite application qui permet d'afficher la position et le temps d'arrivée des trains par rapport à un gare d'arrivée.
    Je voudrais faire un affichage de l'objet transféré par le client vers le serveur dans un interface graphique ?
    je vous envoi mon code du client et du serveur:

    Merci d'avance


    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
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
     
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.net.InetAddress;
    import java.net.Socket;
    import java.net.UnknownHostException;
     
    public class Train implements Runnable {
        /* Identifiant du train */
        private String id;
     
        /* Nom du train */
        private String nom;
     
        private Gare destination;
     
        private Long sleepTime=10000L;
     
        /**
         * Position actuelle
         */
        private int position;
     
        /**
         * Vitesse du train (Distance parcourue par le train chaque itération)
         */
        private int vitesse;
     
        /* Object Socket pour les connexions TCP */
        Socket socket=null;
     
        /* Adresse du serveur distant ip ou hostname */
        private  String serverHost;
     
        /* Port d'écoute du serveur */
        private  int serverPort;
     
        Thread t;
     
        /**
         * Nombre max d'erreurs de connexions.
         * Si ce nombre est atteint. Le programme train s'arrête.
         */
        private static int NB_MAX_ERROR=3;
     
        /**
         * Nombre actuel d'erreur
         */
        private int currentNumberOfErrors;
     
        /**
         * Constructeur de la class Train
         * @param id
         * @param name
         * @param destination
         */
        public Train(String id, String nom, Gare destination) {
            this.id = id;
            this.nom = nom;
            this.destination=destination;
            /* Position de départ */
            this.position=0;
        }
     
        public int getVitesse() {
            return vitesse;
        }
     
        public void setVitesse(int vitesse) {
            this.vitesse = vitesse;
        }
     
        public int getPosition() {
            return position;
        }
     
        public void setPosition(int position) {
            this.position = position;
        }
     
        @Override
        public void run() {
            while(!arret()){
                try{
                 /* Connexion au server */
                    socket = new Socket(serverHost,serverPort);
                    ObjectOutputStream objectOutputStream=new ObjectOutputStream(socket.getOutputStream());
                    /* Envoyer les informations au serveur */
                    objectOutputStream.writeObject(getMessage());
                    /* Récupérer les informations du serveur */
     
                    ObjectInputStream objectInputStream = new ObjectInputStream(socket.getInputStream());
                    String retourServeur = (String) objectInputStream.readObject();
                    traitRetour(retourServeur);
                    /* Fermer les connexions */
                    objectInputStream.close();
                    objectOutputStream.close();
                    socket.close();
                    Thread.sleep(sleepTime);
                }catch(UnknownHostException exp){
                    currentNumberOfErrors=currentNumberOfErrors+1;
                    exp.printStackTrace();
                }catch(IOException exp){
                    currentNumberOfErrors=currentNumberOfErrors+1;
                    exp.printStackTrace();
                } catch(InterruptedException exp){
                    currentNumberOfErrors=currentNumberOfErrors+1;
                    exp.printStackTrace();
                } catch(ClassNotFoundException exp){
                    currentNumberOfErrors=currentNumberOfErrors+1;
                    exp.printStackTrace();
                }
     
     
            }
        }
     
        /**
         * Traitement des retours du serveur
         * le retour peut être:
         * ok => le train coninue d'avancer
         * stop => le train doit s'arrêre
         * @param retourServeur
         */
        private void traitRetour(String retourServeur) {
            System.out.println("Retour du serveur:"+retourServeur);
            if(retourServeur.startsWith("stop")){
                System.out.println("Ordre d'arrêt. Postion de train non changée");
            }else if(retourServeur.startsWith("ok")){
                avanceTrain();
            }
        }
        public void avanceTrain(){
            position=position+vitesse;
        }
     
        /**
         * Démarre le train.
         *
         * @param server adresse du serveur (qui s'occupe de la gestion des trains)
         * @param port  port d'écoute du serveur
         */
        public void demarre(String server,int port){
              serverHost=server;
              serverPort=port;
              t=new Thread(this);
              t.start();
        }
     
        private String getMessage(){
            return id+","+nom+","+destination.getNom()+","+position+","+vitesse;
        }
     
        /**
         * Permet de retourner si le train est toujours en marche
         * @return   True si le train est en arrêt.
         */
        public boolean arret(){
            if(currentNumberOfErrors>NB_MAX_ERROR){
                return true;
            }else{
                /*
                 Le train s'arrête quand il arrive Ã* la gare d'arrivée =>
                 position du train = position de la gare
                 */
                if(position<=destination.getPosition()){
                    return false;
                }else{
                    return true;
                }
            }
     
        }
     
     
        public static void main(String[] args) throws  InterruptedException{
              /* Gare d'arrivée*/
              Gare gareC=new Gare("Gare C",300);
     
              /* Configuration du premier Train */
              Train train1=new Train("T1","Train A",gareC);
              train1.setVitesse(10);
              train1.demarre("127.0.0.1",9001);
     
              /*Une petite pause avant de lancer le deuxième train */
              Thread.sleep(5000L);
     
              /* Configuration du premier Train */
              Train train2=new Train("T2","Train B",gareC);
              train2.setVitesse(7);
              /* Position du départ du train du B qui correspond Ã* la Garre B */
              train2.setPosition(80);
              train2.demarre("127.0.0.1",9001);
     
              /*Une petite pause avant de lancer le deuxième train */
              Thread.sleep(5000L);
     
              /* Configuration du premier Train */
              Train train3=new Train("T3","Train C",gareC);
              train3.setVitesse(5);
              /* Position du départ du train du B qui correspond Ã* la Garre B */
              train3.setPosition(60);
              train3.demarre("127.0.0.1",9001);
        }
     
     
    }

    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
     
    import java.awt.Component;
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
     
    /**
     * Classe principale permettant la gestion des communications
     * Serveur <--> Train
     *
     */
    public class TrainServerManager {
     
        /**
         * Socket serveur
         */
        private ServerSocket socketserver=null;
     
        /**
         * Objet nous permettant de contrôller les distances entre les trains.
         * et de garder les informations de positions des trains.
         */
        private DistanceController distanceController;
     
     
        public TrainServerManager() {
            distanceController=new DistanceController();
     
        }
     
        /**
         * Démarrer le serveur.
         * @param listenPort numéro de port d'écoute du serveur
         * @return 
         * @return 
         */
        public void startServer(int listenPort) throws IOException{
            System.out.println("Démarage du serveur de gestion des trains");
            socketserver = new ServerSocket(listenPort);
            System.out.println("Serveur démarré. En attente des connections:");
            while(true){
                try{
                Socket socketClient = socketserver.accept();
                System.out.println();
                System.out.println("Début d'une nouvelle connexion avec le client ..");
                ObjectInputStream objectInputStream=new ObjectInputStream(socketClient.getInputStream());
                String message = (String) objectInputStream.readObject();
                TrainMessage trainMessage=new TrainMessage(message);
                trainMessage.print();
                ObjectOutputStream oos = new ObjectOutputStream(socketClient.getOutputStream());
                String messageRetour=distanceController.controlTrain(trainMessage);
                oos.writeObject(messageRetour);
                }catch(ClassNotFoundException exp){
                    System.out.println("Erreur de traitement "+exp.getMessage());
                }catch(IOException exp){
                    exp.printStackTrace();
                }
            }
        }
     
     
        /**
         * Class main
         * @param args
         */
        public static void main(String[] args) {
            try{
     
                new TrainServerManager().startServer(9001);
     
            }catch(Exception exp){
                exp.printStackTrace();
            }
        }
     
     
    }

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/10/2013, 20h15
  2. [JSP]Comment afficher l'heure actuel dans une page JSP?
    Par adil_vpb dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 19/02/2007, 15h32
  3. suppression dans une table qui contient une clé etrangère
    Par zana74 dans le forum Décisions SGBD
    Réponses: 13
    Dernier message: 08/08/2006, 10h58
  4. Réponses: 18
    Dernier message: 30/09/2005, 09h30
  5. inserer la date et l'heure systeme dans une table
    Par argon dans le forum Langage SQL
    Réponses: 5
    Dernier message: 11/07/2005, 08h32

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