Draw Graphics on JPanel as insert opertaion on JTextArea are made <p>Hello Everyone and thx in advance. So my problem is I want to draw on a JPanel something on condition on what's been inserted in the JtextArea is this correct? : DocumentListener to check on the insert operation :</p> <pre><code>protected class MyDocumentListener extends JPanel implements javax.swing.event.DocumentListener { @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 try { //if not prompt Line if (!Traffic.getText(Traffic.getLineStartOffset(Traffic.getLineCount()-1), Traffic.getLineEndOffset(Traffic.getLineCount()-1)- Traffic.getLineStartOffset(Traffic.getLineCount()-1)).contains("&gt;&gt;")) {//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 } } </code></pre> <p>Methode to check the condition and draw on the JPanel :</p> <pre><code>public void PortArchitecture (String line) throws BadLocationException { Graphics2D gfx = (Graphics2D)graphicPanel.getGraphics(); String [] valuesId = new String [2]; valuesId = line.split(":"); /**switch (valuesId[0]) { case "Port Number" : draw(); }*/ if(valuesId[0].contains("Port number")) { gfx.drawString("(PN)", 30, 10); gfx.drawString(valuesId[1],30, 140); } if(valuesId[0].contains("Port Extension")) { gfx.drawString("(EXT)", 100, 10); gfx.drawString(valuesId[1], 100, 140); // draw(g); } if(valuesId[0].contains("Forward Extension")) { gfx.drawLine(140,80,140,110); // draw(g); } if(valuesId[0].contains("ON-HOOK")) { // draw(g); } if(valuesId[0].contains("OFF-HOOK")) { // draw(g); } if(valuesId[0].contains("Forward status")) { if(valuesId[1].contains("FORWARDED")) { // draw(g); } else { // draw(g); } } if(valuesId[0].contains("Dialing")) { //get dialed number //draw(g); } } </code></pre> <p>And another thing : I have some result concerning Showing some drawings but when I minimize the application all the graphics are gone.I know I need to call the repaint() but I don't know when and how. Help please!</p>