Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : tableau dynamique [ Archives / Au secours ] (boubacach)

dimanche 23 janvier 2005 à 17:09:28 | tableau dynamique

boubacach


Bonjour à tous, je voulais créer un tableau dynamiquement avec ma variable "nblignes", sans utiliser de Arraylist et Vector parceque c'est dans le cadre d'un cours et que je ne suis pas censer les connaitres. Je vous joind mon code. Merci beaucoup de me dire ou cela cloche (tableau lignes 24) .

import java.awt.* ;
import java.applet.* ;
import java.awt.image.* ;
import java.io.*;
import java.net.*;
import java.awt.event.* ;

public class Visualiseur extends Applet {
    protected Panel p1,p11,p12,p2;
    protected String [] chaine;
    protected String nom1, res;
    protected Choice c ;
    protected Button ok ;
    protected Image image ;
    protected int nblignes, n;
    protected TextArea txt;
    protected Delegue delegue;
    protected Adaptateur adapt;

    public void init(){

        setLayout(new BorderLayout()) ;
        chargement();
        chaine=new String[nblignes];
        p1 = new Panel() ;
        p1.setLayout(new BorderLayout());
        p11 = new Panel();
        p12 = new Panel();
        c = new Choice();
        for (int i=0;i<nblignes;i++) {
            res=chaine[i];
            c.add(res);
            }       
        p11.add(c);
        p1.add("North",p11) ;
        ok = new Button("Admirer") ;
        p12.add(ok);
        p1.add("South",p12) ;
        add("North", p1) ;
        p2 = new Panel();
        txt = new TextArea(7,40) ;
        p2.add(txt) ;
        add("South",p2);
        delegue=new Delegue(this);
        adapt=new Adaptateur(delegue);
        ok.addActionListener(adapt);
        nom1=chaine[0];
        }
   
    public void chargement(){
        URL url ;
        InputStream stream ;
        BufferedReader fichier ;
            try     {
                url = new URL(getDocumentBase(), "listephotos.txt") ;
                stream = url.openStream() ;
                fichier =new BufferedReader(new InputStreamReader(stream));
                }
            catch (IOException e) {
                txt.setText("erreur de fichier") ; return ;
                }
            try     {
                nblignes = Integer.parseInt(fichier.readLine()) ;
                for (int i = 0 ; i < nblignes ; i++)
                    chaine[i] = fichier.readLine() ;
                }
            catch (IOException e) {
                txt.setText("erreur de transfert") ; return ;
                }
            }
   
    public void paint(Graphics g) {
        image = getImage(getDocumentBase(), nom1+".JPG") ;
        g.drawImage(image, 25,80, this) ;
        }
    }
   
class Delegue {
    protected Visualiseur visu;
    Delegue (Visualiseur v) {
        visu=v;
        }
    public void admirer(){
        String res1;
        res1= visu.c.getSelectedItem();
        for(int i=0;i<visu.nblignes;i++){
            if (res1.equals(visu.chaine[i])) {
                visu.nom1=res1 ;
                visu.repaint();
                }
            }
        }
    }
   
class Adaptateur implements ActionListener {
    protected Delegue delegue;
    public Adaptateur (Delegue d){
        delegue = d;
        }
    public void actionPerformed(ActionEvent e){
        delegue.admirer();
        }
    }


dimanche 23 janvier 2005 à 18:00:29 | Re : tableau dynamique

kaloway



kaloway

il faut initialiser nbligne avant de créer le tableau chaine.

dimanche 23 janvier 2005 à 18:01:01 | Re : tableau dynamique

kaloway



kaloway

il faut initialiser nbligne avant de créer le tableau chaine.

dimanche 23 janvier 2005 à 21:02:24 | Re : tableau dynamique

boubacach


Merci pour ta réponse, mais, cela ne fonctionne pas. Mais alors comment expliquer que nblignes est correctement utilisé par la boucle for qui construit le menu choice ? Modifié comme ça, ça ne marche toujours pas : (la méthode chargement donnant la valeur à nblignes )
import java.awt.* ;
import java.applet.* ;
import java.awt.image.* ;
import java.io.*;
import java.net.*;
import java.awt.event.* ;

public class Visualiseur extends Applet {
    protected Panel p1,p11,p12,p2;
    protected String [] chaine;
    protected String nom1, res;
    protected Choice c ;
    protected Button ok ;
    protected Image image ;
    protected int nblignes, n;
    protected TextArea txt;
    protected Delegue delegue;
    protected Adaptateur adapt;

    public void init(){

        setLayout(new BorderLayout()) ;
        nblignes=0;
        chargement();
        chaine=new String[nblignes];
        p1 = new Panel() ;
        p1.setLayout(new BorderLayout());
        p11 = new Panel();
        p12 = new Panel();
        c = new Choice();
        for (int i=0;i<nblignes;i++) {
            res=chaine[i];
            c.add(res);
            }       
        p11.add(c);
        p1.add("North",p11) ;
        ok = new Button("Admirer") ;
        p12.add(ok);
        p1.add("South",p12) ;
        add("North", p1) ;
        p2 = new Panel();
        txt = new TextArea(7,40) ;
        p2.add(txt) ;
        add("South",p2);
        delegue=new Delegue(this);
        adapt=new Adaptateur(delegue);
        ok.addActionListener(adapt);
        nom1=chaine[0];
        n=0;
        }
   
    public void chargement(){
        URL url ;
        InputStream stream ;
        BufferedReader fichier ;
        BufferedReader commentaire ;
       
            try     {
                url = new URL(getDocumentBase(), "listephotos.txt") ;
                stream = url.openStream() ;
                fichier =new BufferedReader(new InputStreamReader(stream));
                }
            catch (IOException e) {
                txt.setText("erreur de fichier") ; return ;
                }
            try     {
                nblignes = Integer.parseInt(fichier.readLine()) ;
                for (int i = 0 ; i < nblignes ; i++)
                    chaine[i] = fichier.readLine() ;
                   
                }
            catch (IOException e) {
                txt.setText("erreur de transfert") ; return ;
                }
            }
   
    public void paint(Graphics g) {
        image = getImage(getDocumentBase(), nom1+".JPG") ;
        g.drawImage(image, 25,80, this) ;
        }
    }
   
class Delegue {
    protected Visualiseur visu;
    Delegue (Visualiseur v) {
        visu=v;
        }
    public void admirer(){
        String res1;
       
        res1= visu.c.getSelectedItem();
        for(int i=0;i<visu.nblignes;i++){
            if (res1.equals(visu.chaine[i])) {
                visu.nom1=res1 ;               
                visu.repaint();
       
                }
            }
        }
    }
   
class Adaptateur implements ActionListener {
    protected Delegue delegue;
    public Adaptateur (Delegue d){
        delegue = d;
        }
    public void actionPerformed(ActionEvent e){
        delegue.admirer();
        }
    }
je précise qu'il n'y a pas d'erreur à la compilation mais quand je test, l'applet ne se charge pas.

lundi 24 janvier 2005 à 12:56:17 | Re : tableau dynamique

dmaillet

qd tu fais

try     {
                nblignes = Integer.parseInt(fichier.readLine()) ;
                for (int i = 0 ; i < nblignes ; i++)
                    chaine[i] = fichier.readLine() ;
                   
                }

au depart, ton nblignes vaut 0
conclusion, il y a erreur des la premiere ligne lue..
si tu veux que ca marche, fais:

try     {
                nblignes = Integer.parseInt(fichier.readLine()) ;
               chaine = new String[nblignes];
                for (int i = 0 ; i < nblignes ; i++)
                    chaine[i] = fichier.readLine() ;
                   
                }


-------------------
dams
-------------------

mardi 25 janvier 2005 à 08:14:23 | Re : tableau dynamique

kaloway



kaloway

dmaillet confirme ce que j'ai dit. nbligne est initialié par Integer.parseInt(fichier.readLine());
le tableau chaine est crée aprés.


mardi 25 janvier 2005 à 08:38:21 | Re : tableau dynamique

dmaillet

Réponse acceptée !
Arf! Oui, mais au vu de la correction....
Donc ce n'est pas apres chargement qu'il faut le faire,
mais dans chargement des que tu connait le nb de ligne
et que tu veux te servir de ton tableau...
maintenant ca doit etre clair pour toi boubacach...

-------------------
dams
-------------------

mardi 25 janvier 2005 à 19:25:40 | Re : tableau dynamique

boubacach


Merci à vous deux  pour les réponses qui m'ont permis de corriger mon problème !
Maintenant mon programme fonctionne à 99% !
En effet j'ai un dernier petit détail à régler...
Il s'agit d'un diaporama , avec affichage de commentaire pour chaque photo.
Mais quand un fichier commentaire manque (c'est volontaire) un message d'erreur s'affiche mais avec le commentaire de la photo précédente en plus et je voudrai qu'il n'y ai que le message d'erreur qui s'affiche, alors je vous remercie d'avance pour vos réponses !

import java.awt.* ;
import java.applet.* ;
import java.awt.image.* ;
import java.io.*;
import java.net.*;
import java.awt.event.* ;

public class Visualiseur extends Applet {
    protected Panel p1,p11,p12,p2;
    protected String [] listephoto, commentaire;
    protected String menu, nom;
    protected Choice c ;
    protected Button ok ;
    protected Image image ;
    protected int nbphoto, nbcomm;
    protected TextArea txt;
    protected Delegue delegue;
    protected Adaptateur adapt;

    public void init(){
        setLayout(new BorderLayout()) ;
                nom="listephotos";
        chargement();
                nbphoto=nbcomm;
                listephoto=new String[nbphoto];
        for (int i = 0 ; i < nbphoto ; i++){
                listephoto[i]=commentaire[i];}
        p1 = new Panel() ;
        p1.setLayout(new BorderLayout());
        p11 = new Panel();
        p12 = new Panel();
        c = new Choice();
        for (int i=0;i<nbphoto;i++) {
            menu=listephoto[i];
            c.add(menu);
            }       
        p11.add(c);
        p1.add("North",p11) ;
        ok = new Button("Admirer") ;
        p12.add(ok);
        p1.add("South",p12) ;
        add("North", p1) ;
        p2 = new Panel();
        txt = new TextArea(7,40) ;
                p2.add(txt) ;
        add("South",p2);
        delegue=new Delegue(this);
        adapt=new Adaptateur(delegue);
        ok.addActionListener(adapt);
        nom=listephoto[0];
            }
   
    public void chargement(){
        URL url ;
        InputStream stream ;
        BufferedReader fichier ;
            try     {
                url = new URL(getDocumentBase(), nom+".txt") ;
                stream = url.openStream() ;
                fichier =new BufferedReader(new InputStreamReader(stream));
                }
            catch (IOException e) {
                                  txt.setText("erreur de fichier\n") ; return ;  //message qui devrait être sans les commentaires !
                                   }
            try     {
                nbcomm = Integer.parseInt(fichier.readLine()) ;
                                commentaire=new String[nbcomm];
                for (int i = 0 ; i < nbcomm ; i++)
                                        commentaire[i] = fichier.readLine() ;
                }
            catch (IOException e) {
                                txt.setText("erreur lecture") ; return ;
                                   }
        }
       
    public void paint(Graphics g) {
        image = getImage(getDocumentBase(), nom+".JPG") ;
        g.drawImage(image, 25,80, this) ;
        }
    }
   
class Delegue {
    protected Visualiseur visu;
    Delegue (Visualiseur v) {
        visu=v;
        }

    public void admirer(){
        visu.nom= visu.c.getSelectedItem();
        for(int i=0;i<visu.nbphoto;i++){
            if (visu.nom.equals(visu.listephoto[i])){
                visu.repaint();
                                   }               
            }
                visu.txt.setText("");
                visu.chargement();
                for (int j=0;j<visu.nbcomm;j++){
            visu.txt.setText(visu.txt.getText() + visu.commentaire[j]+"\n") ;
                        }
                }
        }
       
class Adaptateur implements ActionListener {
    protected Delegue delegue;
    public Adaptateur (Delegue d){
        delegue = d;
        }
    public void actionPerformed(ActionEvent e){
        delegue.admirer();
        }
    }




Cette discussion est classé dans : public, add, import, protected, delegue


Répondre à ce message

Sujets en rapport avec ce message

imprime trop gros [ par jackhabbot ] Bonjour à tous,je souhaite imprimer le contenu d'une fenêtre à une certaine échelle, car pour le moment lorsque j'imprime, c'est environ 2 fois plus g unreported IOException: je vois pas là [ par axi_axi_axi ] Donc c une petite erreur: je veut créer un fichier mais ça compile pas. Merci à la\les personne(s) qui vont me consacrer un peu de temps. voici l'erre projet d'info simulation emprunt [ par jcdarche56 ] bonjour a tous!j'ai un petit souci pour mon projet dinformatik...quand je compile mon fichier j'ai 2 erreurs qui apparaissen:"illegal start of express probleme chat graphique [ par boboz2 ] Bonjour, J'ai repris un code source de GillesWebmaster trouver sur ce site pour le modifier et ainsi realiser mon projet scolaire. Mais j'ai quelques Probleme d'affichage image + menu [ par kawim ] Bonjour, J'ai un probleme avec ma premiere page du programme, j'arrive a faire les menu et afficher l'image, mais quand je click sur le menu il a Problème avec getImage() [ par Akamaru88 ] Bonjour,J'ai beaucoup hésité avant de poster ce message mais je pense avoir cherché partout (y compris sur http://java.sun.com/javase/6/docs/api/ ) et Pleased Help: Parser du XML [ par Rom1S ] Bonjour,Je cherche à parser un fichier XML de ce type : http://www.w3.org/2001/XMLSchema-instance" xsi:noNa


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,406 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.