Bonjour,
J'aimerais faire en sorte que les données puissent être insérées dans un JTextArea.
J'analyse (avec des tests "if") ensuite à chaque cas, j'aimerais dessiner dans un JPanel son correspondant mais je ne vois pas la solution, ni comment faire ça avec avec paintComponent().
Pour voir s'il y a une insertion, j'ai implémenté sur le JTextArea un DocumentListener et voila la classe :
J'ai essayé d'appeler une méthode "PortArchitecture(..)" qui va dessiner ce que je veux et j'ai utilisé getGraphics() mais on m'a dit qu'il ne fallait pas, il faut utiliser paintComponent().Code:
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71 protected class MyDocumentListener extends JPanel implements javax.swing.event.DocumentListener { public String gettypeevent() { DocumentEvent documentEvent = null; DocumentEvent.EventType type = documentEvent.getType(); return type.toString(); } @Override public void changedUpdate(javax.swing.event.DocumentEvent e) { // text has been altered in the textarea } @Override public void insertUpdate(javax.swing.event.DocumentEvent e) { // text has been added to the textarea System.out.println(gettypeevent()); try { // if not prompt Line if (!Traffic.getText(Traffic.getLineStartOffset(Traffic.getLineCount() - 1), Traffic.getLineEndOffset(Traffic.getLineCount() - 1) - Traffic.getLineStartOffset(Traffic.getLineCount() - 1)).contains(">>")) {// if a line after a replace has been inserted if (Traffic.getLineCount() == (lastreplace + 2)) { System.err.println(Traffic.getText(Traffic.getLineStartOffset(lastreplace), Traffic.getLineEndOffset(lastreplace) - Traffic.getLineStartOffset(lastreplace))); // PortArchitecture (Traffic.getText(Traffic.getLineStartOffset(lastreplace), // Traffic.getLineEndOffset(lastreplace) - // Traffic.getLineStartOffset(lastreplace))); lastreplace += 1; } else { // last line when it's not detected by the previous condition it'll be consumed here System.err.println(Traffic.getText(Traffic.getLineStartOffset(lastreplace), Traffic.getLineEndOffset(lastreplace) - Traffic.getLineStartOffset(lastreplace))); // PortArchitecture (Traffic.getText(Traffic.getLineStartOffset(lastreplace), // Traffic.getLineEndOffset(lastreplace) - // Traffic.getLineStartOffset(lastreplace))); } } Traffic.setCaretPosition(Traffic.getDocument().getLength()); } catch (BadLocationException ex) { Logger.getLogger(TrafficSerialPort.class.getName()).log(Level.SEVERE, null, ex); } } @Override public void removeUpdate(javax.swing.event.DocumentEvent e) { // text has been removed from the textarea } @Override protected void paintComponent(Graphics g) { System.out.println("fffffffffff"); super.paintComponent(g); g.drawString("fffffffffff", 120, 60); System.out.println("fffffffffff"); } }
Quelqu'un saurait-il m'indiquer comment faire ?
Merci d'avance pour votre aide.