[Java] textArea dans une boîte de dialogue
Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

[Java] textArea dans une boîte de dialogue



  1. #1
    Lechero

    [Java] textArea dans une boîte de dialogue


    ------

    Bonjour à tous,

    Je cherche à récupérer du texte (qui peut être multilignes) d'une boîte de dialogue afin de l'enregistrer.
    Or, les OptionPane de type inputDialog ne prennent qu'une ligne en paramètre...

    J'ai donc cherché et trouvé ça :
    Code:
    textArea = new JTextArea();
    String text;
    int opt = JOptionPane.showConfirmDialog(SwingUtilities.getWindowAncestor(this), textArea, "Add text", JOptionPane.OK_CANCEL_OPTION);
            if (opt == JOptionPane.OK_OPTION)
            {
                text = textArea.getText();
                ...
            }
    Le problème est que, lorsque l'on appuie sur entrée afin d'écrire une deuxième ligne, la boîte de dialogue ne s'agrandit pas et les deux boutons (ok, annuler) deviennent alors invisibles...

    Comment remédier à ce problème ? Est-ce la bonne solution ?

    Merci d'avance

    -----
    A vaincre sans péril, on triomphe sans gloire (Corneille).

  2. #2
    Arzhur

    Re : [Java] textArea dans une boîte de dialogue

    Bonjour,

    Comment remédier à ce problème ?
    Tu peux demander de redimensionner la fenêtre à chaque fois que quelqu'un tape sur une touche...

    Code:
    textArea.addKeyListener(new KeyAdapter() {
    
    			@Override
    			public void keyTyped(KeyEvent arg0) {
    
    
    				Window window = SwingUtilities.getWindowAncestor(textArea);
    				if (window instanceof Dialog) {
    					Dialog dialog = (Dialog) window;
    					dialog.pack();
    				}
    
    			}
    
    		});
    Est-ce la bonne solution ?
    En tout cas ça marche....

  3. #3
    Lechero

    Re : [Java] textArea dans une boîte de dialogue

    Bonjour,

    merci de votre réponse, mais le problème reste exactement le même ...

    La fenêtre apparaît, avec une zone de texte et les deux boutons.
    J'écrit dans la zone de texte, appuie sur Entrée afin de revenir à la ligne et d'en écrire une nouvelle, et les deux boutons descendent. Au bout de deux nouvelles lignes, ils sont trop bas et donc inaccessibles ...
    A vaincre sans péril, on triomphe sans gloire (Corneille).

  4. #4
    Arzhur

    Re : [Java] textArea dans une boîte de dialogue

    Y'a un truc alors....parce que chez moi ça marche bien

    Voici le code que j'ai testé :

    Code:
    public static void main(String[] args) {
    
    		final JTextArea textArea = new JTextArea();
    		String text = "";
    
    		textArea.addKeyListener(new KeyAdapter() {
    
    			@Override
    			public void keyTyped(KeyEvent arg0) {
    
    
    				Window window = SwingUtilities.getWindowAncestor(textArea);
    				if (window instanceof Dialog) {
    					Dialog dialog = (Dialog) window;
    					dialog.pack();
    				}
    
    			}
    
    		});
    
    		JFrame frame = new JFrame("lol");
    
    
    
    		frame.setVisible(true);
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
    		int opt = JOptionPane.showConfirmDialog(frame, textArea, "Add text", JOptionPane.OK_CANCEL_OPTION);
    
    		if (opt == JOptionPane.OK_OPTION) {
    
    			text = textArea.getText();
    		}
    	}

  5. A voir en vidéo sur Futura
  6. #5
    Lechero

    Re : [Java] textArea dans une boîte de dialogue

    Chez moi non.... =( j'ai testé ton code qui marche super chez moi (j'ai eu deux erreurs comme quoi il fallait rajouter "static" devant le text et textArea.

    Mon code :
    - j'ai créer une fenêtre grâce à l'outil de création d'interface graphique
    - j'ai placé un bouton sur l'interface graphique
    - je veux que lorsque l'on clique sur ce bouton, la boite de dialogue s'ouvre et que l'on puisse rentrer autant de texte que l'on veut.

    Voici le code d'action du bouton :
    Code:
    private void prefButtonActionPerformed(java.awt.event.ActionEvent evt) {                                           
            int opt = JOptionPane.showConfirmDialog(SwingUtilities.getWindowAncestor(this), prefArea, "Add preferences", JOptionPane.OK_CANCEL_OPTION);
             if (opt == JOptionPane.OK_OPTION)
             {
             pref = prefArea.getText();
             System.out.println(pref);
             }
    
        }
    et dans le constructeur de ma fenêtre, j'ai mis :
    Code:
    prefArea = new JTextArea();
            prefArea.setVisible(true);
            prefArea.addKeyListener(new KeyAdapter(){
                public void keyTeped(KeyEvent arg0)
                    {
                        Window window = SwingUtilities.getWindowAncestor(prefArea);
                        if (window instanceof Dialog){
                            Dialog dialog = (Dialog) window;
                            dialog.pack();
                        }
                    }
            });
    A vaincre sans péril, on triomphe sans gloire (Corneille).

  7. #6
    Arzhur

    Re : [Java] textArea dans une boîte de dialogue

    Ca me perturbe ton truc....

    J'ai fait une fenetre avec un bouton qui ouvre la fameuse boite de dialogue, pour être plus proche de ton cas.....bhé ca marche

    Code:
    public class TextAreaTest extends JFrame {
    
    	public TextAreaTest() {
    
    		JButton btnDialog = new JButton("Dialog");
    		btnDialog.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
    
    				final JTextArea textArea = new JTextArea();
    
    				textArea.addKeyListener(new KeyAdapter() {
    
    					@Override
    					public void keyTyped(KeyEvent arg0) {
    
    						Window window = SwingUtilities.getWindowAncestor(textArea);
    						if (window instanceof Dialog) {
    							Dialog dialog = (Dialog) window;
    							dialog.pack();
    						}
    
    					}
    
    				});
    
    				String text = "";
    
    				int opt = JOptionPane.showConfirmDialog(TextAreaTest.this, textArea, "Add text", JOptionPane.OK_CANCEL_OPTION);
    
    				if (opt == JOptionPane.OK_OPTION) {
    
    					text = textArea.getText();
    				}
    
    				System.out.println(text);
    
    			}
    		});
    		getContentPane().add(btnDialog, BorderLayout.CENTER);
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		pack();
    	}
    
    	public static void main(String[] args) {
    
    		TextAreaTest tat = new TextAreaTest();
    
    		tat.setVisible(true);
    
    	}
    
    }

  8. #7
    Lechero

    Re : [Java] textArea dans une boîte de dialogue

    Merci beaucoup ! J'ai ajouté ce code au constructeur de ma fenêtre et ça a parfaitement marché !

    Cependant, j'ai une question : pourquoi cela ne marchait-il pas quand je l'écrivais ici :
    Code:
    private void prefButtonActionPerformed(java.awt.event.ActionEvent evt) {                                           
            // TODO add your handling code here:
        }
    à la place du TODO : etc..., où prefButton est le bouton sur lequel je clique ?

    Merci encore en tout cas !
    A vaincre sans péril, on triomphe sans gloire (Corneille).

  9. #8
    Arzhur

    Re : [Java] textArea dans une boîte de dialogue

    Je ne sais pas trop.....si t'as ton code complet je peux regarder un coup d'oeil mais là j'ai pas d'idée.

    EDIT : Au fait , pour faire propre, il faut désenregistrer le KeyAdapter une fois que tu as fini de t'en servir ( des que tu as cliquer sur Ok/Cancel dans la boite de dialogue)
    Dernière modification par Arzhur ; 22/02/2014 à 17h38.

  10. #9
    Lechero

    Re : [Java] textArea dans une boîte de dialogue

    Si tu veux, je peux t'envoyer tout mon projet en .zip par MP.

    Et je ne comprends pas : "désenregistrer le KeyAdapter une fois utilisé"
    A vaincre sans péril, on triomphe sans gloire (Corneille).

  11. #10
    Arzhur

    Re : [Java] textArea dans une boîte de dialogue

    Bonjour,

    Désolé pour la réponse tardive,

    C'est juste un petit détail : textArea.addKeyListener(....) ajoute un listener sur ton champ texte, c'est "plus propre" de l'enlever avec textArea.removeKeyListener(... ) une fois que tu as fermé ton OptionPane.


    Si tu le fais pas,c'est pas bien méchant...mais c'est une bonne habitude à prendre.

Discussions similaires

  1. Excel - Boîte de dialogue
    Par ALB dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 20/11/2013, 07h04
  2. Dialogue dans Blade Runner: est-ce possible?
    Par Gloubs dans le forum Biologie
    Réponses: 6
    Dernier message: 19/10/2011, 19h34
  3. Aide java: programmation d'une boite a rythme, sequenceur
    Par invite2e9996ac dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 19/10/2009, 11h47
  4. Détection de boite de dialogue
    Par invite562f1dc3 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 0
    Dernier message: 20/08/2009, 14h31
  5. Boite de dialogue script
    Par Laboum dans le forum Internet - Réseau - Sécurité générale
    Réponses: 5
    Dernier message: 02/01/2008, 13h36