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 :

1 JPanel sur 2 qui s'affiche


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 26
    Par défaut 1 JPanel sur 2 qui s'affiche
    Bonjour,

    J'ai 2 classes qui héritent de JPanel et les fonctions de mes onglets doivent retourner un JPanel, je me suis donc contenté de créer une instance de mes classes et de faire un simple return. Dans mes classes, j'ai mis le code où je créé mes éléments et les affiche dans le constructeur de la classe.

    Pour ma première classe, je n'ai aucun problème: tout s'affiche et si j'entre des valeurs et que je lance les calculs, tout se fait normalement.
    Mon problème vient du 2eme onglet: Lorsque je clique sur celui-ci, aucun élément ne s'affiche (je n'ai qu'un JTextField et un JLabel pour l'instant). De plus, le fond du JPanel de cet onglet est tout bleu et je ne comprend pas pourquoi. L'autre fait bizarre est que ma fonction paint fonctionne bien.
    Donc au final, sur mon 2eme onglet, j'ai un fond bleu, un rectangle noir et aucun composant.

    Voici le code important:

    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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    public class EspFrame extends JFrame implements StateChanged {
    	public EspFrame(){
    		super();
     
    		build();//On initialise notre fenêtre
    	}
    	private void build(){
    		setTitle("AT calcul"); //On donne un titre à l'application
    		setSize(650,700); //On donne une taille à notre fenêtre
    		setLocationRelativeTo(null); //On centre la fenêtre sur l'écran
    		setResizable(false); //On interdit la redimensionnement de la fenêtre
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //On dit à l'application de se fermer lors du clic sur la croix
    		setContentPane(getOnglets());
    	}
    	private JTabbedPane getOnglets()
    	{
     
    		if(Onglets== null)
            {
                try
                {
                    Onglets = new JTabbedPane(JTabbedPane.TOP);
                    Onglets.addTab("Tole", null, getOngletTole(), null); //
                    Onglets.addTab("Lettres Découpées", null, getOngletLettre(), null); //
                    //Onglets.addTab("Onglet 3", null, getOnglet3(), null); //
     
                    Onglets.addChangeListener(this);
     
                } catch (java.lang.Throwable e)
                {
                	System.out.println(e);
                    // TODO: Something
                }
            }
            return Onglets;
     
    	}
     
    	private JPanel getOngletLettre()
    	{
     
    		OngletLettre ongletL = new OngletLettre();
     
    		return ongletL;
    	}
     
    	private JPanel getOngletTole(){
     
    		OngletTole ongletT = new OngletTole();
     
    		return ongletT;
     
    	}
     
    }
     
    // Classe OngletLettre
    // C'est pour cette classe que le fond est Bleu et que rien ne s'affiche
     
     
    public class OngletLettre extends JPanel implements ActionListener, ItemListener{
     
     
    	private JPanel panel;
    	private JLabel label;
    	private JTextField textFieldHauteurLettre;
     
    	public OngletLettre()
    	{
     
    		this.setLayout(null);
     
    		try{
    			Insets insets = this.getInsets();
     
    			label = new JLabel("test");
    			this.add(label);
     
    			Dimension l1 = label.getPreferredSize();
    			label.setBounds(150 + insets.left, 150 + insets.top, l1.width, l1.height);
     
    			textFieldHauteurLettre = new JTextField(5);
    			this.add(textFieldHauteurLettre);
     
    			Dimension tf1 = textFieldHauteurLettre.getPreferredSize();
    			textFieldHauteurLettre.setBounds(150 + insets.left, 200 + insets.top, tf1.width, tf1.height);
    		}
    		catch(Exception e)
    		{
     
    			System.out.println(e);
     
    		}
    	}
    }
     
    //Classe OngletTole
    // C'est le panel qui s'affiche au démarrage et qui fonctionne normalement
     
    public class OngletTole extends JPanel implements ActionListener, ItemListener, FocusListener {
     
    	public OngletTole()
    	{
     
    		this.setLayout(null);
     
    		textFieldLarg = new JTextField(5);
    		textFieldHauteur = new JTextField(5);
    		labelLarg = new JLabel("Largeur");
    		labelHauteur = new JLabel("Hauteur");
     
                    //Tout le reste la création des composants
     
           }
    }

    La classe OngletTole contient beaucoup plus de code mais je ne pense pas que ce soit important pour mon problème actuel.


    Merci d'avance et merci a ceux qui suivent l'évolution de mon probleme =x

  2. #2
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Salut,

    Impossible de reproduire ton problème avec le code que tu as fournis. Post un code qui permet de tester ton "problème", sinon c'est probablement impossible d'avoir une opinion ce qui ne va pas.

  3. #3
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 26
    Par défaut
    J'ai fait une archive avec mes fichier source

    Je n'ai pas mis la base de données qui est utilisée, il suffit de mettre les méthodes concernées en commentaires et ca ne changera rien au déroulement.



    EDIT : finalement, voici la base de données, ca facilite les choses



    Merci encore

  4. #4
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Normal, tu schinte complétement le dessin des composants dans ton paint (OngletLettre) en oubliant le super.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void paint(Graphics g) {
    		super.paint(g);
    		g.drawRect(150, 150, 150, 150);		
    	}
    Ensuite utilise plutôt paintComponent puisque tu fait du Swing, paint c'est pour AWT.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void paintComponent(Graphics g) {
    		super.paintComponent(g);
    		g.drawRect(150, 150, 150, 150);		
    	}
    Pour faire des bodures, utilise plutôt des Border. Tu peut faiclement en créé avec la classe utilitaire BorderFactory, puis tu les attribut aux panel avec setBorder(Border).

    Utilise plutôt e.printStackTrace() au lieu de System.out.println(e). Tu aura des info sur tes exceptions.

  5. #5
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 26
    Par défaut
    Effectivement, problème résolu ^^


    Merci beaucoup pour ton aide =)

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

Discussions similaires

  1. datagridview Action sur ce qui est affiché
    Par dragondumond dans le forum VB.NET
    Réponses: 8
    Dernier message: 03/04/2013, 19h21
  2. Réponses: 3
    Dernier message: 05/04/2012, 14h52
  3. Réponses: 3
    Dernier message: 22/10/2009, 18h45
  4. Réponses: 11
    Dernier message: 27/06/2006, 15h05
  5. Texte qui s'affiche aprés le clique sur un bouton radio
    Par Rekiem dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/04/2006, 17h32

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