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

Composants Java Discussion :

Question basique sur Jtable


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 50
    Par défaut Question basique sur Jtable
    Bonjour tout le monde .
    j'ai écrit un programme qui traite un fichier texte de contenu dynamique .
    Le programme qui traite le fichier texte me retourne les variables suivantes :
    String Nom
    String prenom
    Int age

    Mon but est d'afficher les résultats dans un Jtable qui contient 3 colonnes : Nom , Prénom et Age.
    J'ai lu le tutoriel Création interface graphique avec Swing : les tableaux (JTable) mais puisque je suis débutant je me suis un peu perdu ..
    Merci de votre aide

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 3
    Par défaut
    Bonjour,

    Voici ce que tu peux faire.
    Dans l'exemple que je donne le fichier texte est lu ligne par ligne et split chaque chaines de caractères séparé par des virgules pour afficher le résultat dans la JTable.
    Tu peux aussi double cliquer sur le tableau pour ajouter une ligne dynamiquement.

    J'espère que cela t'aidera.

    Julien

    Le contenu du fichier texte appelé monFichierTexte.txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Bob;Smith;32
    John;Doe;44
    Helen;Sage;20
    Bill;Dumond;53

    et le code
    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
     
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.util.Scanner;
    import java.util.regex.Pattern;
     
    import javax.swing.JComponent;
    import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.ListSelectionModel;
    import javax.swing.table.DefaultTableModel;
    import java.util.Random ;
     
     
    @SuppressWarnings("serial")
    public class FillJTable extends JComponent implements MouseListener {
     
    	private JFrame fr = null;
    	private DefaultTableModel model;
    	private JTable table;
    	private String[][] data;
     
    	public FillJTable() throws FileNotFoundException
    	{
    		String filePath = "monFichierTexte.txt"; 
     
    		Scanner scanner=new Scanner(new File(filePath));
     
    		// On récupère les données du fichier texte
    		data = new String[4][3];
    		int count = 0;
    		// On boucle sur chaque champ detecté
    		while (scanner.hasNextLine()) {
    			// On récupère les données du fichier texte
    		    String line = scanner.nextLine();
     
     
    		    // La regex permet de séparer les strings, j'ai choisi le point virgule
    		    Pattern p = Pattern.compile(";");
    		    String[] items = p.split(line);
     
    		    // On ajoute les données dans un tableau de données
    		    for(String s : items) {
    		    	data[count][0] = items[0];
    		    	data[count][1] = items[1];
    		    	data[count][2] = items[2];
    		    }
    		    count++;
    		}
     
    		scanner.close();
     
    		// on créé la JTable
    		createAndShowGui();
    	}
     
    	public void createAndShowGui()
    	{
    		// initialisation et création de la JTable
    		// Les données sont déjà stockées dans la variable => data
    		String[] columnNames = new String[] { "NOM", "PRENOM", "AGE" };
    		model = new DefaultTableModel(data, columnNames);
    		table = new JTable(model);
     
    		table.setRowSelectionAllowed(true);
    		table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);//SINGLE_SELECTION
    		table.setFillsViewportHeight(true);
    		table.setOpaque(false);
    		// on ajoute un MouseListener pour pouvoir utiliser les évènements souris
    		// dans cet exemple on s'en sert pour ajouter dynamiquement des lignes à la JTable
    		table.addMouseListener(this);
     
    		fr = new JFrame("Personnes");
     
    		fr.pack();
    		fr.setSize(630, 550);
    		fr.setLocationRelativeTo(null);
    		fr.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    		fr.setVisible(true);
     
    		JScrollPane scrollPane = new JScrollPane(table);
     
    		fr.getContentPane().add(scrollPane);
    	}
     
    	@Override
    	public void mouseReleased(MouseEvent e) {
    		// TODO Auto-generated method stub
    	}
     
    	@Override
    	public void mouseClicked(MouseEvent e) {
     
    		// Lors d'un double clic au-dessus de la JTable
    		String[] prenom = new String[] {"Filippo", "Francesco", "Jean-Marc", "Hugo"};
    		String[] nom = new String[] {"Marinetti", "Balilla Pratella", "Ball", "Vivenza"};
    		String[] age = new String[] {"131", "125", "135", "54"};
    		Random r = new Random();
     
    		if (e.getClickCount() == 2) 
    		{
    			// La fonction magique pour ajouter une ligne dynamiquement au model
    			model.addRow(new Object[]{ prenom[r.nextInt(4)], nom[r.nextInt(4)], age[r.nextInt(4)]});
    		}
    	}
     
    	@Override
    	public void mouseEntered(MouseEvent e) {
    		// TODO Auto-generated method stub
     
    	}
     
    	@Override
    	public void mouseExited(MouseEvent e) {
    		// TODO Auto-generated method stub
     
    	}
     
    	@Override
    	public void mousePressed(MouseEvent e) {
    		// TODO Auto-generated method stub
     
    	}
     
    	public static void main(String args[]) 
    	{
    		javax.swing.SwingUtilities.invokeLater(new Runnable() {
    			public void run() {
    				try {
    					new FillJTable();
    				} catch (FileNotFoundException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
    			}
    		});
    	}
    }

  3. #3
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 50
    Par défaut
    Merci de ta réponse .
    Est ce que tu peux optimiser ton code pour ne faire que l'affichage dans le Jtable sans appeler les autres méthodes . Merci

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

Discussions similaires

  1. Question basique sur un while
    Par chrislav dans le forum Langage
    Réponses: 3
    Dernier message: 01/02/2009, 19h24
  2. question basique sur la validation d'un fichier xml
    Par waliddib dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 12/01/2009, 20h01
  3. [Joomla!] Quelques questions basiques sur Joomla
    Par Siguillaume dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 26/08/2008, 10h02
  4. [tres nouveau] question basique sur DOTNET
    Par ratoso dans le forum Débuter
    Réponses: 2
    Dernier message: 30/05/2008, 11h39
  5. Question basique sur les tableaux
    Par valanagrid dans le forum C++
    Réponses: 8
    Dernier message: 08/11/2006, 15h47

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