Se connecter / S'enregistrer
Votre question
Fermé

Mise à jour d'un JTextArea

Tags :
  • Java
  • analyse
  • Programmation
Dernière réponse : dans Programmation
19 Octobre 2011 14:59:16

Bonjour chers collègues,

Mon application est un outil d'analyse de données se trouvant dans des fichiers textes.

J'aimerai, lorsque l'on clique sur mon bouton pour rechercher les fichiers que l'utilisateur veut analyser, le JTextArea se remplit en fonction des fichiers choisis.

Je suppose que je dois construire mon panel dans l'actionPerformed mais je ne suis pas certain. En tout cas, les fonctions qui appellent mon autre classe fonctionnent très bien.

Voici mon code :

  1. package PackageAnalog;
  2.  
  3. import java.awt.BorderLayout;
  4. import java.awt.Color;
  5. import java.awt.Dimension;
  6. import java.awt.FlowLayout;
  7. import java.awt.event.ActionEvent;
  8. import java.awt.event.ActionListener;
  9. import java.awt.event.MouseAdapter;
  10. import java.awt.event.MouseEvent;
  11. import java.io.File;
  12.  
  13. import java.util.EventObject;
  14. import java.util.List;
  15. import java.util.ArrayList;
  16. import java.util.Collection;
  17.  
  18. import javax.sql.rowset.Joinable;
  19. import javax.swing.*;
  20. import javax.swing.event.CellEditorListener;
  21. import javax.swing.filechooser.FileFilter;
  22. import javax.swing.plaf.basic.BasicTreeUI.CellEditorHandler;
  23. import javax.swing.plaf.metal.MetalComboBoxEditor;
  24. import javax.swing.table.DefaultTableCellRenderer;
  25. import javax.swing.table.DefaultTableModel;
  26. import javax.swing.table.TableCellEditor;
  27.  
  28.  
  29. @SuppressWarnings("serial")
  30. public class TestAnalog extends JFrame implements ActionListener{
  31.  
  32. private JPanel panel = new JPanel();
  33. private JPanel paneltop = new JPanel();
  34. private JPanel panelbot = new JPanel();
  35. private JPanel panelcent = new JPanel();
  36. private JPanel panelcenttop = new JPanel();
  37. private JButton bParcoursFic = new JButton("Choisir les fichiers à analyser");
  38.  
  39. private JLabel label = new JLabel("Analyse des PDA et temps perdu avec leurs utilisations");
  40.  
  41. private JFileChooser choixRep = new JFileChooser();
  42.  
  43. private Object[][] donnees;
  44. private String[] titreColonnes = { "MSG_ID", "Opérateur", "Temps perdu", "Date et Heure" };
  45. private List<MSG_ID> elements; //renvoie la List<MSG_ID> (liste d'objets contenent les différents paramètres)
  46. private JTextArea zone_texte = new JTextArea();
  47.  
  48.  
  49. public TestAnalog() {
  50.  
  51. super();
  52. build();
  53.  
  54. }
  55.  
  56. private void build() {
  57.  
  58. setTitle("Analyse des fichiers"); //On donne un titre à l'application
  59. setSize(700,550); //On donne une taille à notre fenêtre
  60. setLocation(350, 225); //On centre la fenêtre sur l'écran
  61. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //On dit à l'application de se fermer lors du clic sur la croix
  62. setContentPane(buildContentPane());
  63.  
  64. }
  65.  
  66. private JPanel buildContentPane(){
  67.  
  68. panel.setLayout(new BorderLayout(10, 10));
  69. panel.setBackground(Color.white);
  70. paneltop.setLayout(new FlowLayout(FlowLayout.CENTER));
  71. panelbot.setLayout(new FlowLayout(FlowLayout.CENTER));
  72. panelcent.setLayout(new BorderLayout(0, 0));
  73. panelcenttop.setLayout(new FlowLayout(FlowLayout.CENTER));
  74.  
  75. panel.add(paneltop, BorderLayout.NORTH);
  76. paneltop.add(label);
  77.  
  78. panel.add(panelcent, BorderLayout.CENTER);
  79. panelcent.add(panelcenttop, BorderLayout.NORTH);
  80.  
  81. bParcoursFic.addActionListener(this);
  82. panelcenttop.add(bParcoursFic);
  83.  
  84. //Création du tableau
  85.  
  86. //Object[][] donnees = remplissage();
  87.  
  88. DefaultTableModel model = new DefaultTableModel(donnees, titreColonnes) {
  89. public boolean isCellEditable(int row, int column) {
  90. return false; //aucune cellule editable
  91. }
  92. };
  93.  
  94.  
  95.  
  96. final JTable table = new JTable(model);
  97. table.setAutoCreateRowSorter(true);
  98. table.setPreferredScrollableViewportSize(new Dimension(640, 200));
  99. table.setFillsViewportHeight(true);
  100. JScrollPane scrollPane = new JScrollPane(table);
  101.  
  102. panelcenttop.add(scrollPane);
  103.  
  104. JScrollPane scroll_texte = new JScrollPane(zone_texte);
  105. panelcent.add(scroll_texte);
  106.  
  107. table.addMouseListener(new MouseAdapter() { //si on clique sur une cellule
  108. public void mouseClicked(MouseEvent e) {
  109. if (e.getClickCount() == 1) {
  110. JTable target = (JTable)e.getSource();
  111. int ligne = target.getSelectedRow();
  112. int col = target.getSelectedColumn();
  113. zone_texte.setText(remplissageTexte(target, ligne, col));
  114. }
  115. }
  116. });
  117.  
  118. return panel;
  119. }
  120.  
  121.  
  122. private Object[][] remplissage(){
  123.  
  124. Object[][] liste = new Object[elements.size()][4];
  125.  
  126. for(int i = 0; i < elements.size(); i++){
  127.  
  128. liste[i][0] = elements.get(i).get_code_msgid();
  129. liste[i][1] = elements.get(i).get_code_user();
  130. liste[i][2] = elements.get(i).get_temps();
  131.  
  132. if(elements.get(i).get_requete_insert().equals("")){
  133. liste[i][3] = elements.get(i).get_date_select();
  134. }
  135. else if(elements.get(i).get_requete_select().equals("")){
  136. liste[i][3] = elements.get(i).get_date_insert();
  137. }
  138. else{liste[i][3] = elements.get(i).get_date_insert();}//??
  139.  
  140.  
  141. }
  142.  
  143. return liste;
  144.  
  145. }
  146.  
  147. private String remplissageTexte(JTable target, int ligne, int col){
  148.  
  149. String str = "\n";
  150.  
  151. if(col == 0){
  152.  
  153. Long l = (Long) target.getValueAt(ligne, col);
  154. String u = (String) target.getValueAt(ligne, col + 1);
  155. int h = (Integer) target.getValueAt(ligne, col + 2);
  156. String d = (String) target.getValueAt(ligne, col + 3);
  157.  
  158. for(int i = 0; i < elements.size(); i++){
  159. if(l == elements.get(i).get_code_msgid() && elements.get(i).get_code_user().equals(u) && h == elements.get(i).get_temps() && d == elements.get(i).get_date_insert()){
  160. str += elements.get(i).toString();
  161. }
  162. }
  163. }
  164.  
  165. else{return remplissageTexte(target, ligne, 0);}
  166.  
  167. return str;
  168.  
  169. }
  170.  
  171.  
  172. @Override
  173. public void actionPerformed(ActionEvent e) {
  174. // TODO Auto-generated method stub
  175.  
  176. if(e.getSource() == bParcoursFic){
  177. choixRep.setCurrentDirectory(new File("/"));
  178. choixRep.changeToParentDirectory();
  179. choixRep.setMultiSelectionEnabled(true);
  180. choixRep.showOpenDialog(null);
  181. //choixRep.addChoosableFileFilter(new FileFilter(".log"));
  182. File[] fs=choixRep.getSelectedFiles();
  183. for( int i = 0; i<fs.length; ++i){
  184. // nom du fichier
  185. fs[i].getName();
  186. // chemin absolu du fichier
  187. fs[i].getAbsolutePath();
  188. System.out.println(fs[i].getAbsolutePath());
  189. }
  190. elements = AnalogBis.Anamain(fs);
  191. donnees = remplissage();
  192. panelcenttop.updateUI();
  193.  
  194. }
  195. }
  196.  
  197.  
  198.  
  199. public static void main (String[] args) {
  200.  
  201. TestAnalog analyseur = new TestAnalog();
  202. analyseur.setVisible(true);
  203.  
  204. }
  205.  
  206.  
  207.  
  208.  
  209.  
  210. }


Mon application ne me renvoie pas les données que j'aimerai obtenir sur mon panel (mon JTextArea ne se met pas à jour en fonction des fichiers selectionnés).

Autres pages sur : mise jour jtextarea

Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS