Tableau dynamique

Résolu
boubacach Messages postés 5 Date d'inscription dimanche 23 janvier 2005 Statut Membre Dernière intervention 28 janvier 2005 - 23 janv. 2005 à 17:09
boubacach Messages postés 5 Date d'inscription dimanche 23 janvier 2005 Statut Membre Dernière intervention 28 janvier 2005 - 25 janv. 2005 à 19:25
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();

}

}

7 réponses

dmaillet Messages postés 500 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 11 juillet 2007
25 janv. 2005 à 08:38
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
-------------------
3
kaloway Messages postés 358 Date d'inscription jeudi 24 octobre 2002 Statut Membre Dernière intervention 13 avril 2020
23 janv. 2005 à 18:00
kaloway



il faut initialiser nbligne avant de créer le tableau chaine.
0
kaloway Messages postés 358 Date d'inscription jeudi 24 octobre 2002 Statut Membre Dernière intervention 13 avril 2020
23 janv. 2005 à 18:01
kaloway



il faut initialiser nbligne avant de créer le tableau chaine.
0
boubacach Messages postés 5 Date d'inscription dimanche 23 janvier 2005 Statut Membre Dernière intervention 28 janvier 2005
23 janv. 2005 à 21:02
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dmaillet Messages postés 500 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 11 juillet 2007
24 janv. 2005 à 12:56
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
-------------------
0
kaloway Messages postés 358 Date d'inscription jeudi 24 octobre 2002 Statut Membre Dernière intervention 13 avril 2020
25 janv. 2005 à 08:14
kaloway

dmaillet confirme ce que j'ai dit. nbligne est initialié par Integer.parseInt(fichier.readLine());
le tableau chaine est crée aprés.
0
boubacach Messages postés 5 Date d'inscription dimanche 23 janvier 2005 Statut Membre Dernière intervention 28 janvier 2005
25 janv. 2005 à 19:25
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();

}

}
0
Rejoignez-nous