Centrer texte dans un JLabel ?

Signaler
Messages postés
208
Date d'inscription
mardi 29 novembre 2005
Statut
Membre
Dernière intervention
13 mars 2009
-
Messages postés
208
Date d'inscription
mardi 29 novembre 2005
Statut
Membre
Dernière intervention
13 mars 2009
-
J'ai un JLabel et je voudrais centrer le texte mais le texte reste toujours bien à gauche

private JLabel aqui = new JLabel();
aqui.setHorizontalTextPosition(JLabel.CENTER);
aqui.setBorder(BorderFactory.createLineBorder(Color.black));
setLayout(null);
aqui.setBounds(150, 300, 200, 30);
add(aqui);

Merci de m'apportez votre aide

13 réponses

Messages postés
5360
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
25 janvier 2021
107
Salut,


utilise setHorizontalAlignment pour une action sur le text en horizontale

    choix possible :

        setHorizontalAlignment(SwingConstants.LEFT);

        setHorizontalAlignment(SwingConstants.CENTER);

        setHorizontalAlignment(SwingConstants.RIGHT);

    valeur par défaut : setHorizontalAlignment(SwingConstants.LEFT);


utilise setVerticalAlignment pour une action sur le text en verticale

    choix possible :

        setVerticalAlignment(SwingConstants.TOP);

        setVerticalAlignment(SwingConstants.CENTER);

        setVerticalAlignment(SwingConstants.BOTTOM);
    valeur par défaut : setVerticalAlignment(SwingConstants.CENTER);

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Messages postés
124
Date d'inscription
dimanche 5 octobre 2003
Statut
Membre
Dernière intervention
11 mai 2009
13
Voila ce que tu cherches je pense:
aqui.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
A bientôt
Messages postés
208
Date d'inscription
mardi 29 novembre 2005
Statut
Membre
Dernière intervention
13 mars 2009
1
Merci pour votre aide j'ai essayer les 4 methodes suivante mais c'est toujours pareil le texte est toujours à gauche ya pas un truc a declarer

aqui.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
aqui.setHorizontalTextPosition(SwingConstants.CENTER);
aqui.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
aqui.setHorizontalAlignment(SwingConstants.CENTER);
Messages postés
5360
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
25 janvier 2021
107
Salut,


javax.swing.SwingConstants.CENTER revient au meme que
SwingConstants.CENTER à condition d'avoir fais un import de
javax.swing.SwingConstants.


Essais l'exemple ci-dessous :


import java.awt.Color;


import javax.swing.BorderFactory;

import javax.swing.JFrame;

import javax.swing.JLabel;


public class Test extends JFrame{

    private JLabel aqui = new JLabel();

    public Test(){

        setDefaultCloseOperation(3);

        setSize(300, 300);

        setLocationRelativeTo(null);

        setLayout(null);

        aqui.setText("javafr");

        aqui.setHorizontalAlignment(JLabel.CENTER);

        aqui.setBorder(BorderFactory.createLineBorder(Color.black));

        aqui.setBounds(50, 10, 200, 30);

        add(aqui);

       

    }


    public static void main(String[] args) {

        new Test().setVisible(true);


    }


}

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Messages postés
124
Date d'inscription
dimanche 5 octobre 2003
Statut
Membre
Dernière intervention
11 mai 2009
13
Ton problème viens peut être du fait que tu veux que ton texte soit centré dans ta fenêtre et pas seulement dans ton label...

Si le label est à gauche, avec ce qu'on t'as dit de faire, ton texte
sera centré par rapport au label mais pas par rapport à ta fenêtre.

A ce moment là il faudra que tu travailles la position de ton label dans la fenêtre via le layout...

Bon après peut-être que je m'égare et que ton problème n'a rien à voir...

A bientôt
Messages postés
5360
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
25 janvier 2021
107
Salut,


nan tu as parfaitement raison [auteurdetail.aspx?ID=174609 vychnou] mais tans qu'ils ne comprendrons pas que les layout arrange la vie et évite justement ce genre de problème.......

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Messages postés
208
Date d'inscription
mardi 29 novembre 2005
Statut
Membre
Dernière intervention
13 mars 2009
1
Ok l'exemple fonctionne. Et les autres doucement avec vos layout je suis debutant java.
Messages postés
5360
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
25 janvier 2021
107
Salut,


on ne t'en blame pas mais comme je n'arrete pas de le dire oriente toi
vers les layout et oublie les setBounds pour ce qui est des placement
de tes composants au poils pres tu à assez de layout pour le faire
surtout avec le GridBagLayout qui est assez chaud à apréhender mais se
revele un vrai bonheur

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Messages postés
208
Date d'inscription
mardi 29 novembre 2005
Statut
Membre
Dernière intervention
13 mars 2009
1
Mais finalement sa fonctionne je ne comprend pas ce que j'ai fait j'ai rien toucher et je m'appercois que mon texte est centrer.
aqui.setHorizontalAlignment(SwingConstants.CENTER);

J'aimerais ouvrir et sauvegarder le record de mon jeu de "suite" que j'ai mis aujourd'hui dans un fichier texte dans le meme repertoire de la class si vous avez une solution simple et courte merci. je sais deja convertir un int en String , c'est deja un debut
String record = String.valueOf(rec); Plus qu'a le sauvegarder
Messages postés
5360
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
25 janvier 2021
107
Salut,


Pour l'écriture dans un fichier il y a plein d'exemple sur le site
(cela dépend de comment tu vois la chose : ecriture à un endroit precis
dans le fichier, ecriture en fin de fichier sans ecraser les valeur
precedente ou encore tu ecrase le fichier).


j'ai plus simple pour convertire un int en string


int i = 10;

String s = ""+i;

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Messages postés
208
Date d'inscription
mardi 29 novembre 2005
Statut
Membre
Dernière intervention
13 mars 2009
1
Si le score est meilleur que le record on ecrase le fichier pour le metre dedans il y aura un maximum de 3 caracteres (100). J'ai chercher des exemples mais c'est pour sauvegarder tout un texte autrement j'en est tester d'autre mais j'ai des message d'erreur moi ce que je veux c'est ouvrir le fichier (record.txt) on lit dedans au depart pour afficher le record et ensuite si le record est batut on ecrit dedans le nouveau record 
Messages postés
5360
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
25 janvier 2021
107
Salut,


bon oki voici un exemple le code ecrit dans un fichier en mode append
puis il recupere un vecteur du contenu du fichier (j'utilise la syntaxe
et des objets du jdk 1.5 donc si tu n'es pas avec soit télécharge le
soit tu adapte) :


import java.io.BufferedWriter;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileWriter;

import java.io.IOException;

import java.util.Scanner;

import java.util.Vector;


public class Test {


    public static void main(String[] args) {

        try {

            String filename = "plop";

            for(int i = 0; i < 10; i++)

            write(filename, ""+i);

           

            Vector<String> lines = read(filename);

            for(String str : lines)

                System.out.println(str);

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

   

    public static void write(String filename, String data) throws IOException{

        //petit test sur le nom du fichier

        if(filename == null)

            throw new NullPointerException("null file name");

        if(filename.trim().compareTo("") == 0)

            throw new NullPointerException("empty file name");

        //petit test sur la chaine a ecrire

        if(data == null)

            throw new NullPointerException("null data");

        if(data.trim().compareTo("") == 0)

            throw new NullPointerException("empty data");

       

        BufferedWriter bw = new BufferedWriter(new FileWriter(new File(filename), true));

        bw.write(data);

        bw.newLine();

        bw.flush();

        bw.close();

    }

   

   

    public static Vector<String> read(String filename) throws IOException{

        //petit test sur le nom du fichier

        if(filename == null)

            throw new NullPointerException("null file name");

        if(filename.trim().compareTo("") == 0)

            throw new NullPointerException("empty file name");

       

        Scanner sc = new Scanner(new FileInputStream(filename));

        Vector<String> lines = new Vector<String>();

        while(sc.hasNext())

            lines.add(sc.nextLine());

        sc.close();

        return lines;

    }

}

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Messages postés
208
Date d'inscription
mardi 29 novembre 2005
Statut
Membre
Dernière intervention
13 mars 2009
1
Ok merci je vais voir ca.