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 :

Creation dynamique d'onglet


Sujet :

AWT/Swing Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 2
    Par défaut Creation dynamique d'onglet
    Bonjour,
    Je suis un débutant sous swing (et dans le forum) qui cherche de l'aide.
    Je dois trouver un moyen de creer dynamiquement des onglets dans un JTabbedPane (lors d'un clic sur un bouton).
    D'abord est ce possible?

    J'ai fais une application avec un bouton et un JTabbedPane, dans ma logique ca aurait du marcher mais évidemment ca marche pas.Quand je clique sur le bouton des erreurs étranges s'affiche en bas et mon onglet n'apparait pas.


    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
     
     
    package finalpkg;
     
    import java.awt.FlowLayout;
    import java.awt.Dimension;
    import java.awt.image.*;
    import javax.swing.*; 
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    class Fprincipale extends JFrame implements ActionListener
    {
     
    JPanel container =null;    //le container qui contien l'ensemble de la fenetre'
    FlowLayout layout = null;  //le layout pour positionner les éléments de la fenetre
    JLabel texte=null;         // le texte du bouton
    JButton bouton=null;       //le bouton d'ajout
    JTabbedPane onglet=null;   // le systeme d'onglet
    JPanel pan1=null;          //notre premier onglet on met un texte
    JPanel pan2=null;          //notre deuxieme onglet on met le Panel special graph
     
    public Fprincipale()
    {
    super();//on appel le construction de JFrame
    setContentPane(MKonglet()); //appliquer le texte !!!!!avant les autres initialisations !!!!!
    setTitle("le test de swing"); //on donne un nom a la fenetre
    setSize(320,240); //taille de la fenetre
    setLocationRelativeTo(null);  //centre sur lecran ?????
    setResizable(true) ;  //redimentionnement de la fenetre (true ou false)
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  //fermeture de la fentre lors du cik sur la croix
    setVisible(true);
    }    
     
    JPanel MKonglet()
    {
    container=new JPanel();
     
    layout = new FlowLayout(); //On cree un layout
    layout.setAlignment(FlowLayout.LEFT);//On centre les composants
     
    bouton = new JButton () ;//Création du bouton
    bouton.setPreferredSize(new Dimension(125,25)) ;//On lui donne une taille
    bouton.setText("Cliquer ici") ;//On lui donne un texte
    bouton.addActionListener(this);//On ajoute la fenêtre en //tantqu'écouteurdubouton
     
     
    container.add(bouton);//On ajoute le bouton à la fenêtre
     
    JTabbedPane onglet = new JTabbedPane();
     
     
    JPanel pan1 = new JPanel();
    pan1.setPreferredSize(new Dimension(250,250));
    pan1.add(new JLabel("Je suis dans l'onglet 1"));
    //etc
    pan2 = new GraphPanel();  //GraphPanel c un Jpanel special.
    pan1.setPreferredSize(new Dimension(250,250));
    //pan2.add(new JLabel("Je suis dans l'onglet 2"));
     
    //Tu les ajoutes enfin dans ton JTabbedPane
    onglet.addTab("Titre onglet 1", pan1);
    onglet.addTab("Titre onglet 2", pan2);
     
    container.add(onglet);//On ajoute l'ensemble d'onglet au container
     
    container.setLayout(layout); //On applique le layout au container
    return container;
    }
     
    //action du bouton
     
    public void actionPerformed(ActionEvent e) {
    		if(e.getSource() == bouton){          //Si l’action émane bien du bouton
    JPanel pan = new JPanel();			
    onglet.addTab("encore un onglet", pan);  //j'ajoute le nouveau JPanel au JTabbedPane
                    }
    	}
     
    }
    j'avoue que dans l'action du bouton je pense qu'il manque quelque chose.

    Merci d'avance.

  2. #2
    Membre émérite Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Par défaut
    Salut

    J'imagine que tu as un NullPointerException. Ca aurait été bien de nous donner les "erreurs bizarres". Mais ce n'est pas grave, ta question est bien posée pour une première question sur le forum (merci d'avoir utilisé la balise code ).

    Dans la méthode action performed :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public void actionPerformed(ActionEvent e) {
      if(e.getSource() == bouton){          //Si l’action émane bien du bouton
        JPanel pan = new JPanel();			
        onglet.addTab("encore un onglet", pan);  //j'ajoute le nouveau JPanel au JTabbedPane
      }
    }
    Tu utilises la variable d'instance onglet. Cependant cette variable ne semble pas avoir été initialisée dans le code que tu nous as donné.

    Regarde bien dans ta méthode MKOnglet (au passage, vérifie les conventions de nommage) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    JPanel MKonglet()
    {
    // [...]
     
    JTabbedPane onglet = new JTabbedPane();
     
    // [...]
    }
    Tu déclares une variable locale onglet. Ne voulais tu pas faire ceci à la place ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    JPanel MKonglet()
    {
    // [...]
     
    this.onglet = new JTabbedPane();
     
    // [...]
    }
    Yann

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 2
    Par défaut
    Et bien bravo c'est la bonne réponse

    honnétement je suis encore surpris que ça fonctionne aussi simplement,swing a pas fini de me surprendre...Merci de ton aide.

Discussions similaires

  1. [FLASH MX2004] Creation dynamique d'occurences
    Par WinBernardo dans le forum Flash
    Réponses: 2
    Dernier message: 21/08/2004, 17h05
  2. [en C]creation dynamique d'interface
    Par ronan99999 dans le forum Windows
    Réponses: 3
    Dernier message: 19/08/2004, 12h53
  3. [VB.NET] Erreur sur la creation dynamique d'une texbox
    Par headcooper dans le forum ASP.NET
    Réponses: 4
    Dernier message: 01/07/2004, 19h34
  4. Réponses: 8
    Dernier message: 04/09/2003, 16h07
  5. Creation dynamique d'un objet
    Par Tom_sawyer13 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 06/08/2003, 18h31

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