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 sur JScrollPane


Sujet :

AWT/Swing Java

  1. #1
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Par défaut afficher sur JScrollPane
    salut mes amis je voulais afficher sur JScrollPane ma liste masi ça n'a pas marché j'ai essaué d'utiliser la méthode setText() mais elle n'a pas marché

    voila 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
     
     
    package aa;
    import javax.swing.*;
    import java.awt.*;
    import java.io.*;
    import java.lang.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.ArrayList;
     
     
    public class SimpleFenetre extends JFrame implements ActionListener   {
    private JButton Ok = new JButton("OK");
    private GridBagLayout gbl = new GridBagLayout();
    private JTextPane b = new JTextPane();
    private JScrollPane n = new JScrollPane();
     
      public SimpleFenetre()  {
        this.getContentPane().setLayout(gbl);
        GridBagConstraints gbc = new GridBagConstraints();
        gbc.fill = GridBagConstraints.NONE;
        gbc.gridx = 0;
        gbc.gridy = 0;
        b.setText("affichage");
        n.setPreferredSize(new Dimension(300, 225));
        n.setViewportView(b);
        gbl.setConstraints(this.n, gbc);
        this.getContentPane().add(this.n);
     
     
     
     
       gbc.gridy = 2;
       gbc.anchor = GridBagConstraints.FIRST_LINE_END;
       gbl.setConstraints(this.Ok, gbc);
       Ok.addActionListener(this);
       this.getContentPane().add(this.Ok);
     
     
     
     
     
     
      this.setResizable(false);
        this.setSize(520, 620);
        this.setLocationRelativeTo(null);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
     }
       public static void main(String[] args) {
       SimpleFenetre gui = new SimpleFenetre();
     }
     
     
      public void actionPerformed(ActionEvent e) {
        if (e.getSource().equals(Ok)) {
     
          ArrayList s = new ArrayList();
            s.add("B");
            s.add("C");
            s.add("D");
            s.add("A");
     
         n.setText(s);
     
        }
      }
     
     }
    merci de bien vouloir m'aider

  2. #2
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Par défaut
    je voulais afficher sur JScrollPane ma liste
    Je ne comprends pas...

    Vive les noms de variables explicites : b, n, on comprend tout de suite quel est le type de ces variables...

    Et faire du setText sur un JScrollpane ça ne va pas donner grand chose.

  3. #3
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Par défaut
    voila la déclaration
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    private JTextPane b = new JTextPane();
    private JScrollPane n = new JScrollPane();
    quel est la méthode qui me permet d'afficher ma liste s(ArrayList) sur JScrollpane au lieu setText

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 19
    Par défaut
    pour ajouter un composant dans un JScrollPane, il suffit de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    JTextPane textPane = new JTextPane();
    textPane.setVisible(true) ;
     
    ...
    JScrollPane monJScrollPane = new JScrollPane(textPane) ;
    monJScrollPan.setVisible(true) ; //c'est peut etre pas necessaire !
     
    panelPrincipal.add(monJScrollPane) ;

  5. #5
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Par défaut
    voila la déclaration
    private JTextPane b = new JTextPane();
    private JScrollPane n = new JScrollPane();
    J'avais vu la déclaration, je te disais qu'il valait mieux utiliser des noms de variables plus explicites du genre "nameTextPane" ou "scrollPane", quelque chose du genre fonction_du_composantType_du_composant.
    Ca permet de voir tout de suite à quoi correspond chaque variable car quand tu reprendras ton projet dans 6 mois, tu ne sauras plus à quoi correspond b ou n, et tu seras obligé de faire des aller-retour entre définition et utilisation...
    Après, c'est un conseil, t'en fais ce que tu veux.

    quel est la méthode qui me permet d'afficher ma liste s(ArrayList) sur JScrollpane au lieu setText
    Alors déjà, un JScrollPane n'affiche pas un texte, c'est juste un container qui te permet d'afficher des scrollbars autour d'un composant qui peut avoir une taille relativement importante.

    Après si tu veux afficher le contenu de ton ArrayList dans ton JTextPane, il te suffit de créer une méthode qui :
    - crée une String
    - parcours ton ArrayList
    - pour chaque élément de ton ArryList, concatène l'élément à ta String
    Ensuite, tu n'as plus qu'à faire du setText sur ton JTextPane.

  6. #6
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2005
    Messages : 241
    Par défaut
    Bonjour,
    une solution possible pourrait peut-être de passer par le couple suivante: JScrollPane + JTextArea.

    Le JScrollPane pour, comme son nom l'indique, faire défiler si nécessaire le contenu du JTextArea, auquel on ajoutera ( par la méthode append() ) le contenu.
    Ca ne correspond peut-être pas à la meilleure pratique possible, mais cependant je pense que cela résolverait le problème dont il est question.

    S. Desbois

  7. #7
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Par défaut
    voila par exemple si je veux afficher la liste sans utiliser interface SWING

    la liste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     ArrayList s = new ArrayList();
            s.add("B");
            s.add("C");
            s.add("D");
            s.add("A");
    je mets System.out.print ("ma laiste"+s);
    mais je cherche a afficher dans la liste dans l'interface
    avec settext ne marche pas
    je suis sur qu'il y a une autre méthde qui me permet d'afficher le résulta dans ma fenetre sans création une méthode

  8. #8
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 253
    Par défaut
    Bonjour,

    je me joins à seiryujay en ce qui concerne le nommage des variable:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    private JTextPane textPane = new JTextPane();
    private JScrollPane scrollPane = new JScrollPane();
    C'est quand même plus facile à lire même plusieurs mois plus tard.

    Pour ce qui est de ton problème, un JScrollPane ne sert qu'à afficher un composant dont la taille peut être plus grande que la zone affichage.
    Ce n'est donc pas "le texte" du JScrollPane qu'il te faut modifier mais celui de ton JTextPane.
    En réutilisant ton architecture (qui ne respecte pas un modèle MVC ! ) ca donnerait ceci:
    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
      public void actionPerformed(ActionEvent e) {
        if (e.getSource().equals(Ok)) {
     
          ArrayList s = new ArrayList();
            s.add("B");
            s.add("C");
            s.add("D");
            s.add("A");
     
            StringBuffer sb = new StringBuffer(s.size());
            for (Object object : s) {
    			sb.append(object.toString()).append("\n");
    		}
         b.setText(sb.toString());
     
        }
      }

  9. #9
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Par défaut
    merci encore pour cette information
    mais cette méthode ne résoudre pas mon pb ,par exemple si j'ai une classe Simplefenetre1 qui execute un problème et je voulais afficher dans une autre classe SimpleFenetre avec interafe qui affiche résulta de simpleFenetre1

    j'ai essayé de créé un petit code pour un problème
    voila le code de la classe SimpleFenetre1
    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
     
    package aa;
     
     
     import java.util.Iterator;
     import java.util.ArrayList;
     
     import java.lang.StringBuffer;
     import java.util.Arrays;
     
    import java.lang.*;
    class SimpleFenetre1 {
      SimpleFenetre1(){
     
       }
       public static void main(String[] args) {
     
     
    int valeur=1;
      int   valeur2=34;
     
             valeur=valeur+valeur2;
     
    ArrayList s = new ArrayList();
     ArrayList A = new ArrayList();
     
        s.add("2");
        s.add("4");
        s.add("2");
     
      for (int i = 0;i<s.size();i++){
         String C= s.get(i).toString();
         C=C+1;
     
          A.add(C);
         }
      s=A;
     System.out.println(valeur);
     System.out.println(s);
      }
     
       }
    et je cherche a afficher résulta sur la fenetre SimpleFenetre



    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
     
     
    package aa;
    import javax.swing.*;
    import java.awt.*;
    import java.io.*;
    import java.lang.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.ArrayList;
     
     
    public class SimpleFenetre extends JFrame implements ActionListener   {
    private JButton Ok = new JButton("OK");
    private GridBagLayout gbl = new GridBagLayout();
    private JTextPane b = new JTextPane();
    private JScrollPane n = new JScrollPane();
     
      public SimpleFenetre()  {
        this.getContentPane().setLayout(gbl);
        GridBagConstraints gbc = new GridBagConstraints();
        gbc.fill = GridBagConstraints.NONE;
        gbc.gridx = 0;
        gbc.gridy = 0;
        b.setText("affichage");
        n.setPreferredSize(new Dimension(300, 225));
        n.setViewportView(b);
        gbl.setConstraints(this.n, gbc);
        this.getContentPane().add(this.n);
     
     
     
     
       gbc.gridy = 2;
       gbc.anchor = GridBagConstraints.FIRST_LINE_END;
       gbl.setConstraints(this.Ok, gbc);
       Ok.addActionListener(this);
       this.getContentPane().add(this.Ok);
     
     
     
     
     
     
      this.setResizable(false);
        this.setSize(520, 620);
        this.setLocationRelativeTo(null);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
     }
       public static void main(String[] args) {
       SimpleFenetre gui = new SimpleFenetre();
     }
     
     
      public void actionPerformed(ActionEvent e) {
        if (e.getSource().equals(Ok)) {
     
     
        }
      }
     
     }
    si je tape sur le bouton le résultat de la classe SimpleFenetre1 affiche sur JScrollPane(); de la classe SimpleFenetre

    j'espere que vous m'avez compris

  10. #10
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 253
    Par défaut
    Ce que je te conseillerais de faire:
    1. Dans ta classe SimpleFenetre1:
      • déplacer ton calcul dans une méthode compute de SimpleFenetre1
      • dans ta méthode main, tu ne fais qu'instancier tes 2 classes SimpleFenetre1 et SimpleFenetre et appelle compute
      • créer un accesseur sur ton résultat

    1. Dans ta classe SimpleFenetre:
      • public static void main(String[] args) {
        SimpleFenetre gui = new SimpleFenetre();
        }
      • conserver une référence vers SimpleFenetre1 (donnée dans le constructeur ou via un mutateur)
      • dans ton listener, tu récupère le résultat du calcul de SimpleFenetre1


    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
    package aa;
     
     
     import java.util.Iterator;
     import java.util.ArrayList;
     
     import java.lang.StringBuffer;
     import java.util.Arrays;
     
    import java.lang.*;
    class SimpleFenetre1 {
     
    ArrayList s = new ArrayList();
     
      SimpleFenetre1(){
     
       }
     
       public void compute() {
     
     
    int valeur=1;
      int   valeur2=34;
     
             valeur=valeur+valeur2;
     
     
     ArrayList A = new ArrayList();
     
        s.add("2");
        s.add("4");
        s.add("2");
     
      for (int i = 0;i<s.size();i++){
         String C= s.get(i).toString();
         C=C+1;
     
          A.add(C);
         }
      s=A;
     System.out.println(valeur);
     System.out.println(s);
      }
     
    public ArrayList getS(){
     return s;
    }
     
    public static void main (String[] args){
      SimpleFenetre1 simpleFenetre1 = new SimpleFenetre1();
      simpleFenetre1.compute();
     
      SimpleFenetre simpleFenetre = new SimpleFenetre(simpleFenetre1);
    }
       }
    SimpleFenetre1
    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
     
     
    package aa;
    import javax.swing.*;
    import java.awt.*;
    import java.io.*;
    import java.lang.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.ArrayList;
     
     
    public class SimpleFenetre extends JFrame implements ActionListener   {
    private JButton Ok = new JButton("OK");
    private GridBagLayout gbl = new GridBagLayout();
    private JTextPane b = new JTextPane();
    private JScrollPane n = new JScrollPane();
    private SimpleFenetre1 simpleFenetre1 = null; 
      public SimpleFenetre()  {
        this(null);
     }
       public SimpleFenetre(SimpleFenetre1 simpleFenetre1){
        this.simpleFenetre1 = simpleFenetre1;
     
        this.getContentPane().setLayout(gbl);
        GridBagConstraints gbc = new GridBagConstraints();
        gbc.fill = GridBagConstraints.NONE;
        gbc.gridx = 0;
        gbc.gridy = 0;
        b.setText("affichage");
        n.setPreferredSize(new Dimension(300, 225));
        n.setViewportView(b);
        gbl.setConstraints(this.n, gbc);
        this.getContentPane().add(this.n);
     
       gbc.gridy = 2;
       gbc.anchor = GridBagConstraints.FIRST_LINE_END;
       gbl.setConstraints(this.Ok, gbc);
       Ok.addActionListener(this);
       this.getContentPane().add(this.Ok);
     
        this.setResizable(false);
        this.setSize(520, 620);
        this.setLocationRelativeTo(null);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
     
    }
     
     
      public void actionPerformed(ActionEvent e) {
        if (e.getSource().equals(Ok) && simpleFenetre1 != null) {
            ArrayList s = simpleFenetre1.getS();
     
            StringBuffer sb = new StringBuffer(s.size());
            for (Object object : s) {
    			sb.append(object.toString()).append("\n");
    		}
         b.setText(sb.toString());
     
        }
      }
     
     }
    En espérant que cela règle ton PB.

  11. #11
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Par défaut
    bonjour
    merci encore mes amis
    mais est ce que si possible d'aficher le résultat , le déroulemnt d'une fenetre (classe) directement sur la classe qui contient une interface sur le composant JScrolpane je voulais afficher les System.out.println(); sur ce composant

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Utilises le composant JList, ça ira mieux...
    Juste un petit conseil: avant de foncer tête baissée dans le code et de rester bloqué face à des problèmes relativement simple, lis un tant soit peu de documentation sur Swing, tu auras la grande joie de pouvoir répondre tout seul à tes problèmes et celà relativement rapidement.

    Pour tout ce qui concerne Swing je te conseille fortement suivre le lien suivant qui est à considérer comme une bible quand on démarre sur Swing

    http://java.sun.com/docs/books/tutorial/uiswing/

    Tu trouveras dans le lien suivant la liste des composants Swing et des lines vers la façon de les utiliser. C'est la première référence sur Swing car venant directement de Sun.
    http://java.sun.com/docs/books/tutor...nts/index.html

  13. #13
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Par défaut
    voila je voulais afficher une liste qui contient deux listes s=[[1,2,3],[A,B,C]]

    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
     
    public void actionPerformed(ActionEvent e) {
     
       if (e.getSource().equals(OK)) {
     
         ArrayList s = ulysse.mus();
     
    il me manque la déclaration de sous listes ?
     
    StringBuffer sb = new StringBuffer(s.size());
    for (int j = s.size() - 1; j >= 0; --j) {
    sb.append(sousliste1.get(j).toString()).append("donne").append(sousliste2.get(j).toString()).append("\n");;
    }
    b.setText(sb.toString());
    }
    et je cherche a afficher
    1 donne A
    2 donne B
    3 donne C

    je voulais bien que vous m'aidez sur la partie code déclaré ,merci

Discussions similaires

  1. $dispo[0] et session pour afficher sur page suivante?
    Par oceane751 dans le forum Langage
    Réponses: 2
    Dernier message: 13/04/2006, 05h10
  2. Réponses: 2
    Dernier message: 21/03/2006, 02h24
  3. [Info][débutant] choix type video à afficher sur le web
    Par oumani dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 08/02/2006, 11h31
  4. [XSL-FO] Afficher sur la dernière page seulement !!
    Par Rumeurs dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 31/01/2006, 22h05
  5. Réponses: 3
    Dernier message: 07/01/2006, 23h17

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