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

Composants Java Discussion :

[JOptionPane]retour à la ligne automatique ?


Sujet :

Composants Java

  1. #1
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut [JOptionPane]retour à la ligne automatique ?
    Bonjour à tous,

    sur le projet que je suis en train de réaliser, j'utilise les méthodes statiques de JOptionPane pour afficher les différentes erreurs rencontrées durant le déroulement du soft.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    JOptionPane.showMessageDialog(aFrame, anException.getMessage() , "Exception", JOptionPane.ERROR_MESSAGE);
    le seul problème est que j'utilise certaines librairies externes, et quelques fois les erreurs qu'elles renvoient sont (assez) longues, et elle ne peuvent pas être affichées sur la largeur de l'écran (en gros ça 'dépasse' de chaque côté)

    Je voudrais donc simplement faire en sorte que la largeur de mon JOptionPane ne dépasse jamais celle de l'écran (équivalent de setLineWrap(true) pour les composants textes)

    Auriez-vous une idée ?


  2. #2
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Points : 1 996
    Points
    1 996
    Par défaut
    Bonjour

    Pris depuis la documentation de JOptionPane:
    getMaxCharactersPerLineCount
    public int getMaxCharactersPerLineCount()Returns the maximum number of characters to place on a line in a message. Default is to return Integer.MAX_VALUE. The value can be changed by overriding this method in a subclass.

    Returns:
    an integer giving the maximum number of characters on a line
    Je ne connaissais pas la réponse avant de la trouver dans la documentation. J'ai mis moins de 2 minutes pour la trouver...

    @+

  3. #3
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    ouais c vrai, j'aurais du commencer par là...

    Merci !

    voilà un bout de code qui marche au cas ou ça serait utile à quelqu'un:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    JOptionPane pane = new JOptionPane("info", JOptionPane.INFORMATION_MESSAGE, JOptionPane.DEFAULT_OPTION) {
      public int getMaxCharactersPerLineCount() {
        return 100;
      }
    };
     
    JDialog dialog = pane.createDialog(parente, "Information");
    dialog.setVisible(true);

  4. #4
    Membre émérite
    Avatar de Ioan
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 737
    Points : 2 999
    Points
    2 999
    Par défaut
    Bonjour,
    Pour information les "messages" dans JOptionPane sont de type Object. Donc vous pouvez utiliser autre chose que des String. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    		String texte = "...";
    		JTextArea area = new JTextArea();
    		area.setLineWrap(true);
    		area.setPreferredSize(new Dimension(200,200));
    		area.setText(texte);
    		area.setEnabled(false);
    		JOptionPane.showMessageDialog(null,new JScrollPane(area),
                                         "Exception",JOptionPane.ERROR_MESSAGE);
    @+

  5. #5
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    Citation Envoyé par vedaer
    Bonjour,
    Pour information les "messages" dans JOptionPane sont de type Object. Donc vous pouvez utiliser autre chose que des String.
    @+
    ah, c'est vrai j'y avais pas pensé....

    Très bonne idée vedaer, je prend

    ça va permettre de "scroller" dès que nécessaire

  6. #6
    En attente de confirmation mail

    Profil pro
    Inscrit en
    Mars 2003
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 71
    Points : 116
    Points
    116
    Par défaut
    personnellement j'utilise plutôt une méthode pour mettre l'exception sur plusieurs lignes

    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
     
    // je prends une exception, is le message n'est pas nul et supérieur
    // à une certaine valeur (ici 75) alors je le fragmente sur plusieurs lignes
    public static String formatException(Exception e) {
    	if (e==null) {return "";}
    	if (e.getMessage()==null){return "";}
    	if (e.getMessage().length() > tailleException) {
    		return fragmente(tabMess[i].toString(), 75);
    	} 
    	return e.getMessage();
    }
     
    // méthode permettant de fragmenter un texte sur plusieurs lignes
    // en fonction d'une taille définie
    public static String fragmente(String texte, int taille) {
    	StringBuffer sb = new StringBuffer(texte.length());
    	fragmenteur(texte, sb, taille);
    	return sb.toString();
    }
     
    // méthode récursive fragmentant un texte sur le dernier espace avant
    // la longueur maxi
    public static void fragmenteur(String texte, StringBuffer sb, int taille) {
    	String substr = null;
    	int index = 0;
    	if (texte.length()>taille) {
    		substr = texte.substring(0,taille); 
    		index = substr.lastIndexOf(" ");
    		sb.append(substr.substring(0, index)+"\n");
    		fragmenteur(texte.substring(index+1), sb, taille);
    	}
    }

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

Discussions similaires

  1. retour à la ligne automatique dans un TCanvas
    Par richard038 dans le forum API, COM et SDKs
    Réponses: 12
    Dernier message: 27/03/2006, 22h39
  2. Retour à la ligne automatique sur un wxButton
    Par mister3957 dans le forum wxWidgets
    Réponses: 1
    Dernier message: 27/02/2006, 01h26
  3. Retour à la ligne automatique dans les div
    Par Delphy113 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 15/02/2006, 11h42
  4. [SWING][JEditorPane] retour à la ligne automatiques
    Par narmataru dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 10/02/2006, 18h52
  5. retour à la ligne automatique sur textarea
    Par jpastier dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 19/10/2005, 01h44

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