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

AWT/Swing Java Discussion :

Afficher une matrice


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 8
    Par défaut Afficher une matrice
    Bonjour,

    je réalise un projet de compression d'image en java. J'utilise NetBeans 5.5 comme IDE.

    Pour tester mes fonctions intermédiaires j'aimerais pouvoir afficher les matrices intermédiaires mais j'ai quelques problèmes.
    J'ai crée un JFrame avec une JTextArea.
    Puis j'ai ajouté une méthode pour afficher la matrice dont le code est ci-dessous.
    Seulement il m'indique une erreur sur les settext : "non static variable this cannot be referenced from a static context".
    Pourriez-vous m'indiquer ce qui ne va pas ou me proposer une alternative pour que je puisse visualiser ces matrices ?

    Code :
    public static void editMatrice(double[][] mat){
    int h=mat.length;
    int w=mat[0].length;

    for(int i=0;i<h;i++){
    for(int j=0;j<w;j++){

    this.jTextArea1.setText( this.jTextArea1.getText()+ mat[i][j] + " ");
    }
    this.jTextArea1.setText(this.jTextArea1.getText() + "\n");
    }
    }

  2. #2
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    Utilises la balise [code] (disponible avec le # du formulaire) pour mettre en forme ton code source et qu'il soit plus lisible pour nos pauvres yeux, merci

    Pour ce qui est de ton problème, c'est simple : tu déclares ta méthode editMatrice comme static, tu ne dois utiliser donc que des variables elles même déclarées comme static. Hors, jTextArea1 n'a pas du être déclaré en tant que tel.

    Par simple curiosité, à quoi te sert cette méthode exactement ?

    Merci et bonne chance.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 8
    Par défaut
    Salut,

    merci de ta réponse et désolé pour le code.
    Je détaille un peu la difficulté alors, j'ai effectivement remarqué qu'en enlevant static il ne me donne plus l'erreur mais j'ai un autre problème après dans ce cas.

    Ce qui se passe en gros : je transforme une image en trois tableaux de double (rouge, vert, bleu).

    J'applique ensuite des traitements à ces tableaux pour compresser l'image.
    Mais comme il y a pas mal d'étapes intermédiaires je voudrais pouvoir visualiser l'état d'une matrice à un instant donné pour m'assurer que les fonctions font ce que je veux.

    Comme j'ai une interface utilisateur, j'ai donc juste ajouté un jframe comme je l'ai dit et une zone de texte dans laquelle je veux afficher les valeurs de ma matrice.
    J'ai donc crée la méthode que j'ai envoyé plus haut qui prend en argument une matrice et qui met ses valeurs dans la zone text du JTextArea.

    Les calculs sur les matrices sont effectués par des méthodes d'une autre classe, une fois effectués j'aimerais pouvoir faire un appel à ma fonction editMatrice du type MaForme.editMatrice(m); je pourrais alors voir ce qu'il y a dedans en affichant la form MaForme mais il faut pour cela que ma méthode soit static si j'ai bien compris donc je ne m'en sors pas ...
    Je suis pas du tout habitué à Java il y a peut être beaucoup plus simple mais c'est la première chose qui m'est venu à l'idée si quelqu'un a mieux ...

    Merci d'avance

  4. #4
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    Déjà, au lieu de t'embéter à faire une interface graphique, tu peux simplement afficher du texte avec System.out.println("");. C'est moins confortable à la lecture, mais bon, tu fais comme tu veux après tout.

    Ce que je ne comprend pas, c'est que tu veuilles que ta méthode editMatrice soit static. C'est simplement pour éviter de devoir créer un objet de type MaForme ? Dans ton cas, je crois au contraire que c'est mieux de devoir créer une instance, ce sera beaucoup plus clair. Montre nous plus de code, sans oublier la balise, pour que ce soit plus clair dans nos esprit. Merci

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 8
    Par défaut
    Merci,

    en fait il y a eu plein de réponses pendant que j'écrivais mon précédent message d'où un certain décalage.

    J'ai réussi à m'en sortir en déclarant la jtextarea static comme cela a été proposé ça marche nickel.

    Ce n'est pas grave si c'est pas très élégant, cette fonction ne restera pas dans le programme final elle me sert juste pendant la programmation pour vérifier étape par étape.

    Merci de votre aide !

  6. #6
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    Bien donc si ton problème est résolu, utilises le tag que tu trouveras en bas de page. Merci.

  7. #7
    Invité
    Invité(e)
    Par défaut
    salut,
    déclare jTextArea1 static.
    et appel le dans la fonction sans this.

  8. #8
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    Citation Envoyé par mehdiing
    salut,
    déclare jTextArea1 static.
    et appel le dans la fonction sans this.
    Ce n'est pas forcément une bonne idée. Cela dépend entièrement de la structure de son programme, mais j'avais un jour déclaré une variable File static, et chaque onglet de mon programme contenait cette variable File. Et quand je fermais l'onglet, je voulais récupérer la variable File du fichier qui avait été ouvert dans cette onglet, mais comme cette variable était static, dès que je la changeait pour un onglet, elle changeait pour tous les onglets. Je comprenait rien et j'ai bien passé une journée à comprendre d'où venait l'erreur.

    Le mot clé static doit être utilisé avec beaucoup de précaution .

    Bonne chance.

  9. #9
    Invité
    Invité(e)
    Par défaut
    salut,
    alors il travaille sans static c'est mieux.
    en tout cas d'après ce que je connais static est fait pour permettre principalement l'appel des méthodes sans le biais des instances.
    tu ne voit pas que c'est un peu conradictoire avec la notion d'objet?

  10. #10
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    Je n'ai pas dit que c'était contradictoire avec l'orientée objet, au contraire c'est totalement orientée objet.

    Le danger, c'est qu'on oublie vite une des principales caractéristiques des variables static : quand on déclare une variable static, on considère que cette variable sera la même pour toutes les instances d'une même classe !

    Pour plus d'explication, voir dans la Faq Java. Bonne chance.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Afficher une matrice
    Par fAdoua123 dans le forum Langage
    Réponses: 15
    Dernier message: 06/03/2009, 10h49
  2. afficher une matrice
    Par sub-0 dans le forum Débuter
    Réponses: 5
    Dernier message: 04/01/2009, 21h25
  3. Afficher une matrice
    Par m2ise dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 24/01/2008, 12h30
  4. Afficher une matrice 3d avec OpenGl
    Par kmaniche dans le forum OpenGL
    Réponses: 9
    Dernier message: 03/02/2006, 13h21
  5. [LG] Problème pour afficher une matrice
    Par phoebee dans le forum Langage
    Réponses: 4
    Dernier message: 11/08/2005, 21h41

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