Votre question

Pourriez-vous m'aider à programmer mon application?

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

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 :
package PackageAnalog;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.File;

import java.util.EventObject;
import java.util.List;
import java.util.ArrayList;
import java.util.Collection;

import javax.sql.rowset.Joinable;
import javax.swing.*;
import javax.swing.event.CellEditorListener;
import javax.swing.filechooser.FileFilter;
import javax.swing.plaf.basic.BasicTreeUI.CellEditorHandler;
import javax.swing.plaf.metal.MetalComboBoxEditor;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellEditor;


@SuppressWarnings("serial")
public class TestAnalog extends JFrame implements ActionListener{

private JPanel panel = new JPanel();
private JPanel paneltop = new JPanel();
private JPanel panelbot = new JPanel();
private JPanel panelcent = new JPanel();
private JPanel panelcenttop = new JPanel();
private JButton bParcoursFic = new JButton("Choisir les fichiers à analyser");

private JLabel label = new JLabel("Analyse des PDA et temps perdu avec leurs utilisations");

private JFileChooser choixRep = new JFileChooser();

private Object[][] donnees;
private String[] titreColonnes = { "MSG_ID", "Opérateur", "Temps perdu", "Date et Heure" };
private List<MSG_ID> elements; //renvoie la List<MSG_ID> (liste d'objets contenent les différents paramètres)
private JTextArea zone_texte = new JTextArea();


public TestAnalog() {

super();
build();

}

private void build() {

setTitle("Analyse des fichiers"); //On donne un titre à l'application
setSize(700,550); //On donne une taille à notre fenêtre
setLocation(350, 225); //On centre la fenêtre sur l'écran
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //On dit à l'application de se fermer lors du clic sur la croix
setContentPane(buildContentPane());

}

private JPanel buildContentPane(){

panel.setLayout(new BorderLayout(10, 10));
panel.setBackground(Color.white);
paneltop.setLayout(new FlowLayout(FlowLayout.CENTER));
panelbot.setLayout(new FlowLayout(FlowLayout.CENTER));
panelcent.setLayout(new BorderLayout(0, 0));
panelcenttop.setLayout(new FlowLayout(FlowLayout.CENTER));

panel.add(paneltop, BorderLayout.NORTH);
paneltop.add(label);

panel.add(panelcent, BorderLayout.CENTER);
panelcent.add(panelcenttop, BorderLayout.NORTH);

bParcoursFic.addActionListener(this);
panelcenttop.add(bParcoursFic);

//Création du tableau

//Object[][] donnees = remplissage();

DefaultTableModel model = new DefaultTableModel(donnees, titreColonnes) {
public boolean isCellEditable(int row, int column) {
return false; //aucune cellule editable
}
};



final JTable table = new JTable(model);
table.setAutoCreateRowSorter(true);
table.setPreferredScrollableViewportSize(new Dimension(640, 200));
table.setFillsViewportHeight(true);
JScrollPane scrollPane = new JScrollPane(table);

panelcenttop.add(scrollPane);

JScrollPane scroll_texte = new JScrollPane(zone_texte);
panelcent.add(scroll_texte);

table.addMouseListener(new MouseAdapter() { //si on clique sur une cellule
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 1) {
JTable target = (JTable)e.getSource();
int ligne = target.getSelectedRow();
int col = target.getSelectedColumn();
zone_texte.setText(remplissageTexte(target, ligne, col));
}
}
});

return panel;
}


private Object[][] remplissage(){

Object[][] liste = new Object[elements.size()][4];

for(int i = 0; i < elements.size(); i++){

liste[0] = elements.get(i).get_code_msgid();
liste[1] = elements.get(i).get_code_user();
liste[2] = elements.get(i).get_temps();

if(elements.get(i).get_requete_insert().equals("")){
liste[3] = elements.get(i).get_date_select();
}
else if(elements.get(i).get_requete_select().equals("")){
liste[3] = elements.get(i).get_date_insert();
}
else{liste[3] = elements.get(i).get_date_insert();}//??


}

return liste;

}

private String remplissageTexte(JTable target, int ligne, int col){

String str = "\n";

if(col == 0){

Long l = (Long) target.getValueAt(ligne, col);
String u = (String) target.getValueAt(ligne, col + 1);
int h = (Integer) target.getValueAt(ligne, col + 2);
String d = (String) target.getValueAt(ligne, col + 3);

for(int i = 0; i < elements.size(); i++){
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()){
str += elements.get(i).toString();
}
}
}

else{return remplissageTexte(target, ligne, 0);}

return str;

}


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

if(e.getSource() == bParcoursFic){
choixRep.setCurrentDirectory(new File("/"));
choixRep.changeToParentDirectory();
choixRep.setMultiSelectionEnabled(true);
choixRep.showOpenDialog(null);
//choixRep.addChoosableFileFilter(new FileFilter(".log"));
File[] fs=choixRep.getSelectedFiles();
for( int i = 0; i<fs.length; ++i){
// nom du fichier
fs.getName();
// chemin absolu du fichier
fs.getAbsolutePath();
System.out.println(fs.getAbsolutePath());
}
elements = AnalogBis.Anamain(fs);
donnees = remplissage();
panelcenttop.updateUI();

}
}



public static void main (String[] args) {

TestAnalog analyseur = new TestAnalog();
analyseur.setVisible(true);

}





}

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 : pourriez aider programmer application

20 Octobre 2011 19:41:33

Je me suis pas penché a fond sur ton code mais je vois que tu veux utiliser le clic de la souris:


  1. public void mouseClicked(MouseEvent e) {
  2. if (e.getClickCount() == 1) {
  3. JTable target = (JTable)e.getSource();
  4. int ligne = target.getSelectedRow();
  5. int col = target.getSelectedColumn();
  6. zone_texte.setText(remplissageTexte(target, ligne, col));
  7. }
  8. }
  9. });

Tu ne devrai pas implementer MouseListener?

Si je ne m'abuse ici tu regarde si on a cliqué sur le bouton, Tu prend tous les fichiers selectionné et tu boucle dessus.
Durant la boucle t'affiche en console le path des fichiers(je comprend pas trop l'interret des get au dessus)
  1. public void actionPerformed(ActionEvent e) {
  2. // TODO Auto-generated method stub
  3.  
  4. if(e.getSource() == bParcoursFic){
  5. choixRep.setCurrentDirectory(new File("/";) );
  6. choixRep.changeToParentDirectory();
  7. choixRep.setMultiSelectionEnabled(true);
  8. choixRep.showOpenDialog(null);
  9. //choixRep.addChoosableFileFilter(new FileFilter(".log";) );
  10. File[] fs=choixRep.getSelectedFiles();
  11. for( int i = 0; i<fs.length; ++i){
  12. // nom du fichier
  13. fs.getName();
  14. // chemin absolu du fichier
  15. fs.getAbsolutePath();
  16. System.out.println(fs.getAbsolutePath());
  17. }
  18. elements = AnalogBis.Anamain(fs);
  19. donnees = remplissage();
  20. panelcenttop.updateUI();
  21.  
  22. }
  23. }

Et elements = AnalogBis.Anamain(fs);
donnees = remplissage();
panelcenttop.updateUI(); ca fais quoi exactement.?
Je me doute que j'ai pas repondu a ta question mais si tu pouvais me dire où ca coince ca m'aiderai a t'aider ;) 

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