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 :

affichage d'une liste dans une jtable


Sujet :

Composants Java

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 122
    Points : 189
    Points
    189
    Par défaut affichage d'une liste dans une jtable
    Bonjour tout le monde

    J'ai regardé ce tuto

    http://java.sun.com/docs/books/tutor...nts/table.html

    Je n'arrive pas à adapter ce tuto à mon prog.

    Voici la class des composant
    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
     
     
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.awt.Color.*;
    import javax.swing.JTable;
     
    public class Elementbanque extends JPanel implements ActionListener
     
    {
     
    modetable mo = new modetable();
     
    int i = mo.getrows();
     
    JTextField pretdemand;
    JTextField quotient;
    JTextField sommetot;
    JTextField temps;
     
    JButton somme;
    JButton quit;
     
    JTable rembourcement;
     
    public Elementbanque()
     
    {
     
    JLabel creditinsset = new JLabel("Crédit argon");
    this.add(creditinsset);	
    creditinsset.setForeground(Color.red);
     
    	Font creditinssetfont = creditinsset.getFont();
    	creditinssetfont = creditinssetfont.deriveFont(Font.BOLD).deriveFont(16f);
    	creditinsset.setFont(creditinssetfont);
     
     
    	JLabel sommedemand = new JLabel("Somme demandé");
    	this.add(sommedemand);
     
    	 pretdemand = new JTextField(10);
     
    	this.add(pretdemand);
     
     
     
    	JLabel taux = new JLabel("Taux");
    	this.add(taux);
     
     
    	 quotient = new JTextField(10);
     
    	this.add(quotient);
     
    	JLabel dette = new JLabel("Total due");
    	this.add(dette);
     
    	 sommetot = new JTextField(10);
    	sommetot.addActionListener(this);	
     
     
     
    	JLabel cal = new JLabel("calcul");
    	this.add(cal);
     
    	 somme = new JButton("somme");
    	somme.addActionListener(this);
    	this.add(somme);
     
    	JLabel nbmois = new JLabel("période du pret");
    	this.add(nbmois);
     
    	 temps= new JTextField(10);
    	this.add(temps);
     
     
     
    	String[][] rowData = new String[i][2];
    	String[] columnNames = new String[2];
     
    	columnNames[0]="Date"; 
    	columnNames[1]="Somme prélevée"; 
     
    	rembourcement = new JTable(rowData,columnNames);
    	JScrollPane sroll = new JScrollPane(rembourcement);
    	this.add(sroll);
     
     
    	 quit = new JButton("Quitter");
    	quit.addActionListener(this);
    	this.add(quit);
     
     
     
    }
     
    public void actionPerformed(ActionEvent evt) {
     
     
    Calcul c = new Calcul();
     
     
     
    Object source = evt.getSource();
     
     
    int totalannee=0, moi=0, tempstaux=0; 
     
    float totaldue=0; 
     
    String riendanssommdemande="";
     
     
    boolean som=false;
     
     
    if(source==somme)
    {
     
    som=true;
     
    int emprunt =  Integer.parseInt(pretdemand.getText());
     
    int temp = Integer.parseInt(temps.getText());
     
     
    float taux = Float.valueOf(quotient.getText());
     
     
     
     
    sommetot.setText(Double.toString(c.pret(som, riendanssommdemande, taux, totalannee, tempstaux, moi, emprunt, totaldue, temp)));
     
    }
     
    if(source==quit)
    {
     
    System.exit(0);
     
    }
     
    	float real;
     
    	real=c.getSommprelev();
     
    	String paiement;
     
    	paiement = String.valueOf(real);
     
    rembourcement.setValueAt(paiement,i,1);
    }
     
    }

    Voici la class de model de la table
    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 javax.swing.table.AbstractTableModel;
     
    import java.util.Vector;
     
    import java.util.GregorianCalendar;
    import java.util.Calendar;
    import java.util.Date;
     
    public class modetable extends AbstractTableModel
    {
     
     
    Calcul c = new Calcul();
     
    GregorianCalendar calendar = new java.util.GregorianCalendar(); 
     
    int ligne=0;
    int j,nb;
    float preleve=0;
     
     
    public int getRowCount()
    {
     
     
    return rowData.length;
    }
     
    public int getColumnCount()
    {
     
     
     
    return 0;
    }
     
    public Object getValueAt(int rows, int cols)
    {
     
     
     
    return 0;
    }
     
     
    public void setValuAt(Object aValue,int row, int column)
    {
     
     
     
    return ;
    }
     
    public int getrows()
    {
     
     
     
    nb=c.getTemps();
     
    nb=nb*12;
     
     
    ligne=nb;
     
    for(j=1;j<ligne;j++)
    {
    calendar.add(calendar.MONTH,1);
    Date tempDate = calendar.getTime();
     
     
     
    }
     
    return j;
    }
    }
    Je souhaiterais pouvoir afficher le résultat directement dans le tableau apres le click sur le bouton somme, ce resultat sera un plan appurement pour le rembourcement d'un prêt.

    Pouvez vou m'aider.

    Merci

    Cordialement

    A bientôt

  2. #2
    Membre averti Avatar de xixi31
    Inscrit en
    Juin 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2005
    Messages : 423
    Points : 414
    Points
    414
    Par défaut
    lu,

    y'a un truc que je comprends pas, pourquoi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public int getColumnCount()
    {
    return 0;
    }
    ??

  3. #3
    Débutant  
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 122
    Points : 189
    Points
    189
    Par défaut
    Bonjour tout le monde

    getColumnCount correspond bien au nombre de colonne, et le nombre de colonne est deja spécifié dans la construction de la jtable.

    Mai je pense que j'ai mal compris le tuto.

    Merci

    Cordialement

    A bientôt

  4. #4
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Bon deux questions

    1. Où stockes tu tes données dans le model car là je ne vois pas trop
    2. Qu'est-ce que la classe Calcul
    Ensuite des constatations:
    Les méthodes getValueAt et setValueAt ne font rien, il est de ce fait normal que rien n'apparaisse dans ta table. Ceci étant bien sûr relié au fait que tu ne stocke pas tes données dans le model, chose pour laquelle il est pourtant fait.
    Grosso merdo tu devras avoir un matrice d'Object (un tableau de tableaux d'Object) stockant toutes tes valeur.
    Le setValueAt(Object o, int x, int y) sert à mettre la veleur O dans la case correspondant au coordonnées x et y de ta matrice.
    le getValueAttint x, int y) sert à récupérer la valeur contenue dans la case correspondant aux coordonnées x et y de ta matrice.
    le getColumnCount() correspond au nombre de collones dans ta matrice et le getRowCount() correspond au nombre de lignes dans celle ci
    Eventuellement tu oeux également implémenter la méthode getColumnName(int i) qui renvoie le nom de la colonne se trouvant à l'index i
    celà permet d'fficher le nom des colones dans ta JTable

    ensuite quelle est l'utilité de la méthode getrows que tu as créé? car elle ne correspond à aucune méthode de l'abstractTableModel et donc ne sert à rien vis à vis de la JTable.


    bon, comme d'hab tu n'as pas compris grand chose......
    Faudrait faire des efforts un peu de temps en temps jeune homme.
    Car bon je ne vais pas aller chercher ton premier post sur le forum java, mais bon ça fait une paye et le concept du mvc devrait déja être intégré...

  5. #5
    Membre averti Avatar de xixi31
    Inscrit en
    Juin 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2005
    Messages : 423
    Points : 414
    Points
    414
    Par défaut
    rien d'autre à ajouter

  6. #6
    Débutant  
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 122
    Points : 189
    Points
    189
    Par défaut
    Bonjour

    C'est dans la class Calcul, que les calculs sont fai pour le prêt.
    Je veux ensuite récupérer le résultat dans la jtable.

    Voici la class Calcul.

    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
     
     
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
     
     
    public class Calcul
    {
     
    public float totaldue=0;
     
    public int temps=0;
     
     
    public float moi=0;
     
    boolean som=false;
     
    String riendanssommdemande;
     
    float taux=0,totalannee=0, tempstaux=0; 
    int emprunt=0;
     
     
     
    public float sommprelev=0;
     
    public float pret(boolean som,String riendanssommdemande, float taux, float totalannee, float tempstaux, float moi, int emprunt, float totaldue, int temps)
     
    {
     
     
    riendanssommdemande = Integer.toString(emprunt);
     
     
     
    if(som==true)
    {
    	if(riendanssommdemande.equals("")||taux ==0)
    	{
     
     
    JOptionPane.showMessageDialog(null,"Formulaire incomplet");
     
     
    	}
     
    		else
    		{
     
     
     
    		      moi=(int)(emprunt*taux/100) +  (int)emprunt;
     
    				totalannee=moi*12;
     
     
    				tempstaux=taux/100;
     
     
    				 return totaldue=temps*totalannee+tempstaux;
     
     
    				}
    }
     
     
    return totaldue;
     
    }
     
    public float affichetable(float sommprelev, float moi, float totaldue, int temps  )
     
     
    {
     
    sommprelev=totaldue/temps;
     
     
    return sommprelev;
     
    }
     
    public int getTemps()
    {
     
    return temps;
    }
     
    public float getSommprelev()
    {
    return sommprelev;
     
    }
     
     
    }
    Avez vous compris?

    Cordialement

    A bientôt

  7. #7
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    C'est pas réellement ce que je te demandais.

    A quoi sert la classe Calcul dans ton modèle vu que tu ne l'utilise nulle part.....

  8. #8
    Débutant  
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 122
    Points : 189
    Points
    189
    Par défaut
    Bonjour tout le monde

    Je crois que mon probleme des le départ est de ne pas avoir expliqué exactement ce que je souhaite faire.

    Voilà, je fais un prog de prêt en java, la jtable me servira à afficher les dates du rembourcement du prêt avec 2 colonnes(prélèvement, date de prélèment)

    -Là où je blog, c'est pour assigner au deux colonnes les variables.

    Je viens de m'acheter un livre des fonctions avancer de java, je vais étudier
    les models de table.

    La class calcul, sert pour les calculs du prêt.

    Merci

    Cordialement

    A bientôt

  9. #9
    Membre actif Avatar de Lethal
    Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2006
    Messages : 194
    Points : 227
    Points
    227
    Par défaut
    Je ne pense pas que c'est les JTable et les modèles qui posent problème mais ta connaissance de l'orienté objet. Commence d'abord par apprendre ces concepts avant de vouloir "jouer" avec du graphique.

  10. #10
    Débutant  
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 122
    Points : 189
    Points
    189
    Par défaut
    Bonjour tout le monde

    Apres des recherches j'ai modifié mon code.

    Mai il ne fonctionne pas.

    Voici 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
     
    import javax.swing.table.AbstractTableModel;
     
    import java.util.Vector;
     
    import java.util.GregorianCalendar;
    import java.util.Calendar;
    import java.util.Date;
     
    public class modetable extends AbstractTableModel
    {
     
     
    Calcul c = new Calcul();
     
    GregorianCalendar calendar = new java.util.GregorianCalendar(); 
     
     
    int j,nb=c.temps;
     
    float preleve=c.sommprelev;
     
    public int formdate()
    {
     
    for(j=0;j<nb;j++)
    {
     
    calendar.add(calendar.MONTH,1);
    Date tempDate = calendar.getTime();
     
    return tempDate;
    }
     
    }
     
    private String[] columnNames =
    {
    "Date","Somme prélevée"
     
    };
     
     
    private int rows=nb*12;
     
    public Object[][] data =
    {
     
    {
     
    preleve
    }
    };
     
    public String getColumnName(int col)
    {
     
    return columnNames[col];
    }
     
    public int getRowCount()
    {
     
     
    return data.length;
    }
     
    public int getColumnCount()
    {
     
     
     
    return columnNames.length;
    }
     
     
     
    public Object getValueAt(int rows, int col)
    {
     
     
     
     
     
     
    return data[rows][col];
    }
     
     
    public void setValuAt(Object value,int rows, int col)
    {
    data[rows][col] = value; 
     
     
    }
     
     
     
    }
    J'ignore où sont les erreurs.

    Je ne voix pas comment mêttre la date.

    Pourriez vous me dire ce que je dois modiffier svp.

    Merci.

    Cordialement

    A bientôt

  11. #11
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Si tu ne nous dit pas ce qui marche pas, nous aussi on ignore ou sont les erreurs...

  12. #12
    Débutant  
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 122
    Points : 189
    Points
    189
    Par défaut
    Re

    1-je n'arrive pas à retourner la date.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    return tempDate;
    2-J'ai teste mon programme sans la date, la fenêtre s'affiché avec du tout en gris même les composants.

    A+

  13. #13
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Citation Envoyé par argon
    Re

    1-je n'arrive pas à retourner la date.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    return tempDate;
    2-J'ai teste mon programme sans la date, la fenêtre s'affiché avec du tout en gris même les composants.

    A+
    Tu l'emploies ou ta méthode formDate ?

    De plus, c'est louche de mettre un return comme ca dans une boucle...

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 429
    Points : 475
    Points
    475
    Par défaut
    Bonjour,

    Je viens de copier tes deux classes (Calcul et modetable [sans majuscule initiale ?]) dans mon IDE préféré. C'est vraiment difficile à comprendre : indentation fantaisiste, pas de commentaires, noms de variable peu explicites, ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public int formdate() {
            for(j=0;j<nb;j++) {
                calendar.add(calendar.MONTH,1);
                Date tempDate = calendar.getTime();
                return tempDate;
            }
    }
    C'est normal que cela ne compile pas : ta fonction doit renvoyer un int, et tu renvoies une Date. De toute façon, mettre le return dans la boucle semble absurde : la boucle ne dépassera pas la première étape j=0.

    Cordialement,

    Nicolas

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 429
    Points : 475
    Points
    475
    Par défaut
    Si tu veux vraiment mettre la date sous forme de int, par exemple 20060826 pour aujourd'hui, tu peux faire :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            int dateSousFormeDeInt = 0;
            try {
                dateSousFormeDeInt = Integer.parseInt(new SimpleDateFormat("yyyyMMdd").format(tempDate));
            } catch (NumberFormatException e) { e.printStackTrace(); }
            return dateSousFormeDeInt;

  16. #16
    Débutant  
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 122
    Points : 189
    Points
    189
    Par défaut
    Bonjour tout le monde

    Je n'obtien aucune erreur lors de la compil.

    Les calcul avec les texfield fonctionne.

    mai le plan d'appurement ne s'affiche pas dans le tableau.

    Voici les 3 class

    class calcul

    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
     
     
    import java.awt.*;
     
     
     
    public class Calcul
    {
     
    public float totaldue=0;
     
    public int temps=0;
     
     
    public float moi=0;
     
    boolean som=false;
     
     
    float taux=0, tempstaux=0, totalinteret=0; 
    int emprunt=0;
     
     
     
    public float sommprelev=0;
     
     
     
     
     
     
     
    public float pret(boolean som, float taux, float totalannee, float tempstaux, float moi, int emprunt, float totaldue, int temps)
     
    {
     
    if(som==true)
    {
     
    		moi=temps*12;
     
    	 	tempstaux= taux * temps; 	
     
    		totalinteret=emprunt*tempstaux/100;
     
    		totaldue = totalinteret + emprunt;
     
    }
     
     
    return totaldue;
     
    }
     
    public float affichetable(float sommprelev, float moi, float totaldue, int temps  )
     
     
    {
     
    sommprelev=totaldue/temps;
     
     
    return sommprelev;
     
    }
     
    public int getTemps()
    {
     
    return temps;
    }
     
    public float getSommprelev()
    {
    return sommprelev;
     
    }
     
     
    }

    class model de tableau

    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
     
     
    import javax.swing.table.AbstractTableModel;
     
    import java.util.Vector;
     
    import java.util.GregorianCalendar;
    import java.util.Calendar;
    import java.util.Date;
     
    public class modetable extends AbstractTableModel
    {
     
     
    Calcul c = new Calcul();
     
    GregorianCalendar calendar = new java.util.GregorianCalendar(); 
     
    Date tempDate;
     
    int j,nb=c.temps;
     
    float preleve=c.sommprelev;
     
    public Date formdate()
    {
     
    for(j=0;j<nb;j++)
    {
     
    calendar.add(calendar.MONTH,1);
    tempDate = calendar.getTime();
     
     
    }
    return tempDate;
    }
     
    private String[] columnNames =
    {
    "Date","Somme prélevée"
     
    };
     
     
    private int rows=nb*12;
     
    public Object[][] data =
    {
     
    {
     
    preleve, tempDate
     
     
    }
    };
     
    public String getColumnName(int col)
    {
     
    return columnNames[col];
    }
     
    public int getRowCount()
    {
     
     
    return data.length;
    }
     
    public int getColumnCount()
    {
     
     
     
    return columnNames.length;
    }
     
     
     
    public Object getValueAt(int rows, int col)
    {
     
     
    return data[rows][col];
    }
     
     
    public void setValuAt(Object value,int rows, int col)
    {
    data[rows][col] = value; 
     
     
    }
     
     
     
    }
    Class ElementBanque

    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
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
     
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.awt.Color.*;
     
     
    public class Elementbanque extends JPanel implements ActionListener
     
    {
     
    JTextField pretdemand;
    JTextField quotient;
    JTextField sommetot;
    JTextField temps;
    JButton quit;
    JTable rembourcement;
    JButton somme;
    JButton efface;
     
     
    public Elementbanque()
     
    {
     
    	GridBagLayout gridbag = new GridBagLayout();
    	GridBagConstraints constraints = new GridBagConstraints();
    	this.setLayout(gridbag);
     
    	JLabel creditinsset = new JLabel("Crédit argon");
     
    	creditinsset.setForeground(Color.red);
     
    	Font creditinssetfont = creditinsset.getFont();
    	creditinssetfont = creditinssetfont.deriveFont(Font.BOLD).deriveFont(16f);
    	creditinsset.setFont(creditinssetfont);
     
    	constraints.gridx=1;
    	constraints.gridy=0;
    	constraints.gridwidth=1;
    	constraints.gridheight=1;
    	constraints.weightx=30;
    	constraints.weighty=30;
     
     
     
     
    	gridbag.setConstraints(creditinsset, constraints);
    	this.add(creditinsset);
     
     
    	JLabel sommedemand = new JLabel("Somme demandé");
     
    	this.add(sommedemand);
     
    	constraints.gridx=0;
    	constraints.gridy=1;
    	constraints.gridwidth=1;
    	constraints.gridheight=1;
    	constraints.weightx=30;
    	constraints.weighty=30;
     
     
     
    	gridbag.setConstraints(sommedemand, constraints);
     
     
     
    	 pretdemand = new JTextField(10);
     
    	this.add(pretdemand);
     
     
    	constraints.gridx=1;
    	constraints.gridy=1;
    	constraints.gridwidth=1;
    	constraints.gridheight=1;
    	constraints.weightx=30;
    	constraints.weighty=30;
     
    	gridbag.setConstraints(pretdemand, constraints);
     
     
    	JLabel taux = new JLabel("Taux");
    	this.add(taux);
     
     
    	constraints.gridx=0;
    	constraints.gridy=2;
    	constraints.gridwidth=1;
    	constraints.gridheight=1;
    	constraints.weightx=30;
    	constraints.weighty=30;
     
    	gridbag.setConstraints(taux, constraints);
     
    	 quotient = new JTextField(10);
     
    	this.add(quotient);
     
     
    	constraints.gridx=1;
    	constraints.gridy=2;
    	constraints.gridwidth=1;
    	constraints.gridheight=1;
    	constraints.weightx=30;
    	constraints.weighty=30;
     
    	gridbag.setConstraints(quotient, constraints);
     
     
     
     
    	JLabel nbmois = new JLabel("période du pret");
    	this.add(nbmois);
     
     
    	constraints.gridx=0;
    	constraints.gridy=3;
    	constraints.gridwidth=1;
    	constraints.gridheight=1;
     
    	constraints.weightx=30;
    	constraints.weighty=30;
     
    	gridbag.setConstraints(nbmois, constraints);
     
     
     
     
     
     
    	 temps= new JTextField(10);
    	this.add(temps);
     
     
    	constraints.gridx=1;
    	constraints.gridy=3;
    	constraints.gridwidth=1;
    	constraints.gridheight=1;
    	constraints.weightx=30;
    	constraints.weighty=30;
     
    	gridbag.setConstraints(temps, constraints);
     
     
     
     
     
    	somme = new JButton("somme");
    	somme.addActionListener(this);
    	this.add(somme);
     
     
    	constraints.gridx=0;
    	constraints.gridy=25;
    	constraints.gridwidth=1;
    	constraints.gridheight=1;
    	constraints.weightx=30;
    	constraints.weighty=30;
     
    	gridbag.setConstraints(somme, constraints);
     
     
     
    	JLabel dette = new JLabel("Total due");
    	this.add(dette);
     
     
    	constraints.gridx=0;
    	constraints.gridy=5;
    	constraints.gridwidth=1;
    	constraints.gridheight=1;
    	constraints.weightx=30;
    	constraints.weighty=30;
     
    	gridbag.setConstraints(dette, constraints);
     
     
     
    	 sommetot = new JTextField(10);
    	sommetot.addActionListener(this);	
    	this.add(sommetot);
     
     
    	constraints.gridx=1;
    	constraints.gridy=5;
    	constraints.gridwidth=1;
    	constraints.gridheight=1;
    	constraints.weightx=30;
    	constraints.weighty=30;
     
    	gridbag.setConstraints(sommetot, constraints);
     
    	JLabel table = new JLabel("Tableau d'appurement du prêt");
    	table.setForeground(Color.blue);
    	this.add(table);
     
    	constraints.gridx=1;
    	constraints.gridy=6;
    	constraints.gridwidth=1;
    	constraints.gridheight=3;
    	constraints.weightx=30;
    	constraints.weighty=30;
     
    	gridbag.setConstraints(table, constraints);
     
     
    	rembourcement = new JTable(new modetable());
    	JScrollPane sroll = new JScrollPane(rembourcement);
     
     
    	constraints.gridx=0;
    	constraints.gridy=10;
    	constraints.gridwidth=5;
    	constraints.gridheight=8;
    	constraints.weightx=0;
    	constraints.weighty=0;
     
     
    	gridbag.setConstraints(sroll, constraints);
    	this.add(sroll);
     
    	efface = new JButton("Recalculer un prêt");
    	efface.addActionListener(this);
    	constraints.gridx=1;
    	constraints.gridy=25;
    	constraints.gridwidth=1;
    	constraints.gridheight=1;
    	constraints.weightx=20;
    	constraints.weighty=20;
    	gridbag.setConstraints(efface, constraints);
    	this.add(efface);
     
     
     
     
     
     
     
     
    	quit = new JButton("Quitter");
    	quit.addActionListener(this);
     
    	constraints.gridx=2;
    	constraints.gridy=25;
    	constraints.gridwidth=1;
    	constraints.gridheight=1;
    	constraints.weightx=20;
    	constraints.weighty=20;
    	gridbag.setConstraints(quit, constraints);
    	this.add(quit);
     
     
     
     
     
     
     
    }
     
    public void actionPerformed(ActionEvent evt) {
     
     
    Calcul c = new Calcul();
     
     
     
    Object source = evt.getSource();
     
     
    int totalannee=0, moi=0, tempstaux=0; 
     
    float totaldue=0; 
     
    String riendanssommdemande="";
     
     
    boolean som=false;
     
     
    if(source==somme)
    {
     
    som=true;
     
    int emprunt =  Integer.parseInt(pretdemand.getText());
     
    int temp = Integer.parseInt(temps.getText());
     
     
    float taux = Float.valueOf(quotient.getText());
     
     
     
     
    sommetot.setText(Double.toString(c.pret(som, taux, totalannee, tempstaux, moi, emprunt, totaldue, temp)));
     
     
    }
     
    if(source==efface)
    {
    pretdemand.setText("");
     
    temps.setText("");
     
    quotient.setText("");
     
    sommetot.setText("");
     
    }
     
    if(source==quit)
    {
     
    System.exit(0);
     
    }
     
     
     
    }
     
    }
    Question

    1-manque t'il un bou de code dans le modetab ou dans la class composantes


    2-pour le format de la date, puis je integrer le code de Nicolas_75 pour ce format 27 08 2006.


    3-j'ignore si je perd mon temps, mai je veux que le plan d'appurement s'affiche instantanément apres le calcul.

    Est ce que c'est possible?

    Merci

    Cordialement

    A bientôt

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 429
    Points : 475
    Points
    475
    Par défaut
    Bonjour,

    Je ne trouve pas le "main"...
    EDIT : ni de frame

    Nicolas

  18. #18
    Débutant  
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 122
    Points : 189
    Points
    189
    Par défaut
    Bonsoir


    Voici la frame

    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
     
     
    import java.awt.*;
    import java.awt.event.*;
     
    import javax.swing.*;
    import javax.swing.event.*;
    import java.awt.image.*;
     
     
     
    public class Banque {
     
     
     
     
    public final static int longu = 500;
     
    public final static int larg = 700;
     
     
     
    public static void main(String[] args)
    {
     
     
    		JFrame F = new JFrame("Crédit argon");
     
    		F.setSize(longu,larg);
    		F.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		F.setLayout(new GridBagLayout());
    		F.setBackground(Color.darkGray);
    		F.getContentPane().add(new Elementbanque());
    		F.setVisible(true);
     
     
    }
     
     
    }
    Cordialement

    A bientôt

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 429
    Points : 475
    Points
    475
    Par défaut
    OK. Le tout compile chez moi. Mais toujours avec une indentation fantaisiste, et sans commentaire...

    1. Peux-tu donner un jeu de données (à rentrer) qui fonctionne ?
    (Faut-il entrer "5 %", "5", "0.05" ? etc...)

    2. Comme tu n'as rien commenté dans ton code, il est dur de s'y retrouver. Peux-tu nous dire selon quel mécanisme ton code s'y prend normalement pour afficher la table ?

    Nicolas

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 429
    Points : 475
    Points
    475
    Par défaut
    J'ai à nouveau regardé ton code.

    1. Si tu veux que la table s'affiche, mais uniquement après avoir appuyé sur le bouton, il faut mettre un peu de code dans le actionPerformed du bouton

    2. Si la table ne s'affiche pas comme tu le souhaites, c'est probablement parce que les valeurs numériques (sur le nombre de lignes, etc...) ne sont pas bonnes.

    Dans le code ci-dessous, j'ai fait des modifications à la classe modetable (toujours sans majuscule ?). Elles sont repérées par des //. Il y a alors bien une table qui s'affiche.

    Nicolas

    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
    class modetable extends AbstractTableModel {
     
        Calcul c = new Calcul();
        GregorianCalendar calendar = new java.util.GregorianCalendar();
        Date tempDate;
        int j,nb=c.temps;
        float preleve=c.sommprelev;
     
        public Date formdate() {
            for(j=0;j<nb;j++) {
                calendar.add(calendar.MONTH,1);
                tempDate = calendar.getTime();
            }
            return tempDate;
        }
     
        private String[] columnNames =
        {
            "Date","Somme prélevée"            
        };
     
     
        public Object[][] data =
        {
            {
                preleve, tempDate
            }
        };
     
        public String getColumnName(int col) {
            return columnNames[col];
        }
     
        public int getRowCount() {
            //return data.length;
            return 5;
        }
     
        public int getColumnCount() {
            // return columnNames.length;
            return 2;
        }
     
        public Object getValueAt(int rows, int col) {
            // return data[rows][col];
            return new Integer(rows*col);
        }
     
        public void setValuAt(Object value,int rows, int col) {
            data[rows][col] = value;
        }
    }

Discussions similaires

  1. une liste dans une liste?
    Par JerryOne3 dans le forum C#
    Réponses: 11
    Dernier message: 11/01/2009, 16h43
  2. quand je selectionne une valeur dans une liste, retourne une autre valeur
    Par nsqualli dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/12/2008, 14h23
  3. [débutant] Comment gérer une liste dans une liste
    Par Lenoiche dans le forum iReport
    Réponses: 0
    Dernier message: 16/07/2008, 10h41
  4. champ d'une liste lié à une liste dans un autre site
    Par guintolli dans le forum SharePoint
    Réponses: 8
    Dernier message: 08/07/2008, 14h51
  5. Appel d'une liste dans une liste (JSTL)
    Par abalgue dans le forum Hibernate
    Réponses: 4
    Dernier message: 15/06/2007, 10h56

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