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 :

[JTextArea] Faire une console


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Etudiant en Master Informatique
    Inscrit en
    Mars 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Etudiant en Master Informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 2
    Par défaut [JTextArea] Faire une console
    Salut à tous

    Je suis entrain de réaliser un appli pour coder du SQL et l'envoyer à la DB au lieu de tout faire dans cmd ou bash

    (Oui je sais ça existe déjà mais je suis curieux ^^)

    Alors j'ai fait une JTextArea où j'ai réussi à faire que seul la dernière ligne est effaçable quand le curseur est dessus.

    Le ptit bémol c est que si on sélectionne au moins un des caractères de la dernière ligne et une ou plusieurs lignes avant ça les supprimes même la dernière ligne.

    Ça doit pas être méchant à régler avec les fonctions autour de la sélection dans JTextArea.

    Voici mon code

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    private void jTextArea1KeyPressed(java.awt.event.KeyEvent evt) {                                      
            if(evt.getKeyCode() == KeyEvent.VK_BACK_SPACE || evt.getKeyCode() == KeyEvent.VK_DELETE)
            {
                _nbLigne = jTextArea1.getLineCount();
                try {
                    _position = nbLigne(jTextArea1.getText(0, jTextArea1.getCaret().getMark()),"\n") + 1;
                } catch (BadLocationException ex) {
                    Logger.getLogger(SQLEditorForm.class.getName()).log(Level.SEVERE, null, ex);
                }
                if(_position < _nbLigne){
                    System.out.println("Pas effacable");
                    jTextArea1.setEditable(false);
                }
                else{
                    System.out.println("Le caractere : " + jTextArea1.getText().charAt(jTextArea1.getCaret().getMark()-1));
                    if(jTextArea1.getText().charAt(jTextArea1.getCaret().getMark()-1) == '\n')
                    {
                        System.out.println("Pas effacable c'est la fin de la ligne");
                        jTextArea1.setEditable(false);
                    }
                    else
                    System.out.println("Effacable");
                }
                _oldPosition = _position;
            }
        }                                     
     
        private void jTextArea1KeyReleased(java.awt.event.KeyEvent evt) {                                       
            if(evt.getKeyCode() == KeyEvent.VK_BACK_SPACE || evt.getKeyCode() == KeyEvent.VK_DELETE)
            {
                _nbLigne = jTextArea1.getLineCount();
                try {
                    _position = nbLigne(jTextArea1.getText(0, jTextArea1.getCaret().getMark()),"\n") + 1;
                } catch (BadLocationException ex) {
                    Logger.getLogger(SQLEditorForm.class.getName()).log(Level.SEVERE, null, ex);
                }
                if(_position < _oldPosition){
                    System.out.println("Ligne(s) supprimée(s)");
                    jTextArea1.setText(jTextArea1.getText()+"\n");
                }
                else{
                    System.out.println("Lignes intactes");
                }
                jTextArea1.setEditable(true);
            }
        }
    EDIT : j'ai oublié de précisé que nbLigne() calcul le nombre de ligne du TextArea en comptant le nombre de "\n" contenu dans la chaine


    Ce que je voudrais surtout savoir, ce que vous pensez de mon code : si c'est propre ou crade d'après vous, s'il y a plus simple pour faire un genre de console??


    Merci d'avance

  2. #2
    Membre très actif

    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2011
    Messages : 181
    Billets dans le blog
    1
    Par défaut
    Slt.
    Je pense qu'il y a plus simple.
    Pour connaitre la position du dernier caractère du texte selectionné :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jTextArea1.getSelectionEnd ()
    , et pour connaitre la position du premier caractère de la derniere ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jTextArea1.getText ().lastIndexOf ("\n");
    , il n'y a qu'a faire une comparaison entre les deux et on n'en parle plus .
    Bon courage.

  3. #3
    Candidat au Club
    Homme Profil pro
    Etudiant en Master Informatique
    Inscrit en
    Mars 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Etudiant en Master Informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 2
    Par défaut
    Oui en effet y avait plus simple^^

    J'ai repris ce que tu avais marqué et maintenant la gestion de la suppression et de la non suppression est complète.

    Ca me donne ça si jamais ça peut intéresser certains.

    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
     
            int selectDebut = jTextArea1.getSelectionStart();
            int positionCurseur = jTextArea1.getCaretPosition();
            int derniereOccu = jTextArea1.getText().lastIndexOf ("\n") +1; // +1 pour ne pas supprimer le >
     
            if(evt.getKeyCode() == KeyEvent.VK_BACK_SPACE || evt.getKeyCode() == KeyEvent.VK_DELETE)
            {
                /*
                 * Suppression en fonction du curseur
                 * Suppression possible que si le curseur est après le > de SQL> 
                 * 
                 * Suppression en fonction de la selection
                 * Seule une selection commencant après SQL> peut être supprimée
                 */
                if(positionCurseur < (derniereOccu +5) || selectDebut < (derniereOccu +4 ))
                {
                    System.out.println("Pas effacable");
                    jTextArea1.setEditable(false);
                }
                else
                    System.out.println("Effacable");
     
            }
    Un grand merci à toi

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

Discussions similaires

  1. [Débutant] Faire une appli console qui fonctionne en ligne de commande
    Par BasicZX81 dans le forum VB.NET
    Réponses: 3
    Dernier message: 15/12/2013, 18h39
  2. Réponses: 1
    Dernier message: 29/05/2013, 10h55
  3. Réponses: 11
    Dernier message: 01/07/2012, 15h12
  4. Réponses: 3
    Dernier message: 18/11/2011, 19h23
  5. [console]Comment faire une pause?
    Par aminee009 dans le forum MFC
    Réponses: 5
    Dernier message: 20/10/2005, 10h33

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