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 :

showInputDialog() multilignes ?


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut showInputDialog() multilignes ?
    Bonjour,

    Est-il possible d'avoir un JOptionPane.showInputDialog() permettant de saisir un retour à la ligne dans le texte saisi ?

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    A priori en regardant vite fait la javadoc je n'en ais pas l'impression.
    Mais bon développer un composant de ce stype à base de JDialog ne doit pas être bien dûr

  3. #3
    Membre éprouvé
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Par défaut
    Bonjour,

    Comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    String monMessage = "Entrez une valeur";
     
    JTextArea maSaisie = new JTextArea();
    JScrollPane pane = new JScrollPane(maSaisie);
     
     
    Object[] elements = new Object[2];
    elements[0] = monMessage;
    elements[1] = pane;
     
    JOptionPane.showMessageDialog(null, elements, "Saisie demandée", JOptionPane.QUESTION_MESSAGE) ;
     
    String reponse = maSaisie.getText();
    Par contre 3 remarques :

    1) Comme tu le vois j'utilise un showMessageDialog, car pour showInputDialog, il y a déjà un composant de saisie que tu ne peux pas changer (du moins à ma connaissance).

    2) Tu ne peux voir qu'une ligne à la fois, c'est pour ça que j'utilise un JScrollPane pour pouvoir scroller.

    3) Y'a surement mieux à faire, en utilisant la classe JDialog.

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Petit rappel (c'est dans la javadoc de JOptionPane) :
    • Le paramètre message des méthodes showXXX() de JOptionPane est de type Object et non pas String, et il est interprété de la manière suivante :
      [list:0d50513c8b]
    • Si c'est un tableau, chacun de ses éléments sont interprétés récursivement.
    • Si un un Component, il est affiché tels quel dans la JDialog.
    • Si c'est une Icon, elle est affiché directement dans un JLabel.
    • Et les autres types sont converties en String via toString() pour être affichés dans un JLabel...
    [/list:u:0d50513c8b]


    Il est donc possible de faire tout ce qu'on veut sans pour autant repartir de JDialog (et donc se taper beaucoups de contrôle à la main).

    Dans ton cas la méthode showConfirmDialog() est plus approprié (showInputDialog() affichera toujour le textField en plus). Ce qui peut donner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    		JTextArea textArea = new JTextArea("Texte par défaut");
    		JScrollPane scrollArea = new JScrollPane(textArea);
    		scrollArea.setPreferredSize(new Dimension(200,80));
    		JOptionPane.showConfirmDialog(
    			frame, // Ta JFrame
    			new Object[] {"Ta question ici !",  scrollArea},
    			"Titre",
    			JOptionPane.OK_CANCEL_OPTION,
    			JOptionPane.QUESTION_MESSAGE);
    Si le rendu ne te plais pas tu peux directement lui passer un JPanel correctement rempli...

    a++

    [edit] Grillé, mais mon textarea est bien multiligne (merci setPreferredSize())

  5. #5
    Membre éprouvé
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Par défaut
    @ adiGuba

    Ah c'est donc sur les preferred size qu'il fallait jouer pour changer la taille. J'ai essayer le setSize mais il n'avait aucun effet, c'est pour ça que j'ai ajouté un JScrollPane...

    @ SheikYerbouti

    Tant qu'à choisir, prend la solution d'adiGuba, le rendu est meilleur.

  6. #6
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    merci Maîtres

  7. #7
    Membre éprouvé
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Par défaut
    Citation Envoyé par SheikYerbouti
    merci Maîtres
    Non n'exagère pas! Le maître c'est adiGuba, moi je ne suis encore qu'un jeune padawan!

    Houlà bon je

  8. #8
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Descent
    Non n'exagère pas! Le maître c'est adiGuba
    N'exagère pas non plus... moi aussi je suis loin d'être un maitre

  9. #9
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Quel que soit notre niveau, quelqu'un a toujours un niveau supérieur 8)

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

Discussions similaires

  1. [JTable] Cellules multilignes dans un jtable
    Par chesteric31 dans le forum Composants
    Réponses: 15
    Dernier message: 06/06/2005, 14h50
  2. Connaître la hauteur d'un texte multilignes
    Par Crisanar dans le forum Windows
    Réponses: 2
    Dernier message: 22/11/2004, 23h01
  3. [TCombobox] Item multiligne
    Par Bernard Grosdoy dans le forum Composants VCL
    Réponses: 9
    Dernier message: 28/09/2004, 10h11
  4. StringGrid, multiligne et word wrap
    Par Dajon dans le forum C++Builder
    Réponses: 7
    Dernier message: 17/09/2003, 17h15
  5. [langage] Extraire un block dans une variable multiligne
    Par |DUCATI| DesMo dans le forum Langage
    Réponses: 9
    Dernier message: 11/02/2003, 14h56

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