4 votes

ajouter des étiquettes supplémentaires en java

Bonjour à tous les programmeurs ! J'essaie d'ajouter deux JLabel à JFrame mais la deuxième méthode d'ajout qui a ajouté le label semble avoir écrasé ma première méthode d'ajout. J'ai essayé de résoudre ce problème en utilisant 2 variables de label différentes et en utilisant la méthode setLocation fournissant un point de coordonnées différent pour chaque label. Mais je ne parviens pas à le résoudre. Pourquoi ne puis-je pas ajouter deux étiquettes dans mon programme ? Au fait, je n'obtiens pas d'erreur. Il s'agit plutôt d'une erreur logique que je n'arrive pas à résoudre.

Voici mon code actuel :

import javax.swing.*;

public class test {

    private static  JLabel label;

    private static  JLabel label1;
    public static void main(String[] args){
        initializeLabel();
        initializeImage();
        initializeFrame();
    }

    private static void initializeLabel(){
         label = new JLabel();
         label.setText("hi");
         label.setLocation(54,338);
    }

    private static void initializeImage(){
        label1 = new JLabel();
        label1.setText("sss");
        label1.setLocation(55, 340);
    }

    private static void initializeFrame(){
        JFrame frame = new JFrame();
        frame.add(label1);
        frame.add(label);

        frame.setVisible(true);
    }

}// class

8voto

Kowser Points 3805

Changez votre code de la manière suivante.

private static void initializeFrame(){
    JFrame frame = new JFrame();

    frame.setLayout(new FlowLayout()); // <-- you need this for now

    frame.add(label1);
    frame.add(label);
    frame.setVisible(true);

    // optional, but nice to have.
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
}

Pour en savoir plus sur l'agencement des balanciers, cliquez ici : Un guide visuel pour les responsables de la mise en page

Pour en savoir plus : Créer une interface graphique avec JFC/Swing

4voto

camickr Points 137095

Lire la suite Responsables de la mise en page . Le gestionnaire de disposition par défaut d'un cadre est le BorderLayout. Votre code ajoute les deux étiquettes au CENTRE de la disposition. Cela n'est pas possible. Chaque emplacement du BorderLayout ne peut contenir qu'un seul composant (il peut s'agir d'un JPanel avec d'autres composants).

Vous devez utiliser un autre gestionnaire de mise en page. Sans connaître vos besoins exacts, il est difficile de vous suggérer le gestionnaire de mise en page à utiliser.

Débarrassez-vous également de toutes ces méthodes statiques. Le tutoriel Swing contient de nombreux exemples qui vous donneront une meilleure idée de la façon de structurer votre programme.

3voto

trashgod Points 136305

La mise en page par défaut de JFrame es BorderLayout et la position par défaut est BorderLayout.CENTER .

Pour des raisons de commodité, BorderLayout interprète l'absence de spécification d'une chaîne de caractères de la même manière que la constante CENTER .

En effet, la deuxième étiquette remplace la première.

0voto

wannik Points 3026

Ajouter frame.setLayout(new FlowLayout()); après la construction du cadre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X