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
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
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); } }
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
Partager