title: How to insert my own code to Netbeans Gui Builder?
body: <p>I found on the Web code: <a href="http://java-sl.com/tip_autoreplace_smiles.html" rel="nofollow noreferrer">http://java-sl.com/tip_autoreplace_smiles.html</a> which I edited to my own needs, take a look:</p>
  
  <pre><code>import java.awt.Graphics;
  import java.awt.Graphics2D;
  import java.awt.RenderingHints;
  import java.io.IOException;
  import javax.swing.*;
  import javax.swing.event.DocumentEvent;
  import javax.swing.event.DocumentListener;
  import javax.swing.text.*;
  import java.awt.image.BufferedImage;
  import java.io.File;
  import javax.imageio.ImageIO;
  
  public class Emotes extends JEditorPane {
  
      public Emotes() {
          super();
          this.setEditorKit(new StyledEditorKit());
          this.initListener();
      }
  
      private void replace (String text, StyledDocument doc, ImageIcon icon, int start, String what) throws BadLocationException
      {
          int i = text.indexOf(what);
          while(i &gt;= 0) 
          {
              final SimpleAttributeSet attrs = new SimpleAttributeSet(doc.getCharacterElement(start+i).getAttributes());
              if (StyleConstants.getIcon(attrs) == null)
              {
                  StyleConstants.setIcon(attrs, icon);
                  doc.remove(start+i, what.length());
                  doc.insertString(start+i,what, attrs);
              }
              i = text.indexOf(what, i+what.length());
          }
      }
  
      private void initListener() {
          getDocument().addDocumentListener(new DocumentListener(){
              @Override
              public void insertUpdate(DocumentEvent event) {
                  final DocumentEvent e=event;
                  SwingUtilities.invokeLater(new Runnable() {
                      @Override
                      public void run() {
                          if (e.getDocument() instanceof StyledDocument) {
                              try {
                                  StyledDocument doc=(StyledDocument)e.getDocument();
                                  int start= Utilities.getRowStart(Emotes.this,Math.max(0,e.getOffset()-1));
                                  int end=Utilities.getWordStart(Emotes.this,e.getOffset()+e.getLength());
                                  String text=doc.getText(start, end-start);
  
  
                                  replace(text, doc, createEmoticon("wink.png"), start, ";)");
                                  replace(text, doc, createEmoticon("wink.png"), start, "&lt;wink&gt;");
                                  replace(text, doc, createEmoticon("sad.png"), start, ":(");
                                  replace(text, doc, createEmoticon("sad.png"), start, "&lt;sad&gt;");
                                  replace(text, doc, createEmoticon("smile.png"), start, ":)");
                                  replace(text, doc, createEmoticon("smile.png"), start, "&lt;smile&gt;");
  
                              } catch (BadLocationException e1) {
                                  e1.printStackTrace();
                              }
                          }
                      }
                  });
              }
              @Override
              public void removeUpdate(DocumentEvent e) {
              }
              @Override
              public void changedUpdate(DocumentEvent e) {
              }
          });
      }
  
      static ImageIcon createEmoticon(String icon)
      {
          BufferedImage img = null;
          try
          {
              img = ImageIO.read(new File(icon));
              Graphics g = img.getGraphics();
              ((Graphics2D)g).setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
          }catch (IOException ex)
          {
          }
          return new ImageIcon(img);
      }
  }
  </code></pre>
  
  <p>which works great. But I created in Netbeans a new GUI (JDialog Window) with JEditorPane on it, where I want to use this feature on JDialog window:</p>
  
  <p><img src="https://i.stack.imgur.com/y6702.png" alt="enter image description here">    </p>
  
  <p>but it doesnt want to work at all. When I type ":)" its not changing in an image. </p>
  
  <p>Just try to run that code:</p>
  
  <pre><code>public class NewJDialog extends javax.swing.JDialog {
  
      /** Creates new form NewJDialog */
      public NewJDialog(java.awt.Frame parent, boolean modal) {
          super(parent, modal);
          initComponents();
      }
  
      /** This method is called from within the constructor to
       * initialize the form.
       * WARNING: Do NOT modify this code. The content of this method is
       * always regenerated by the Form Editor.
       */
      @SuppressWarnings("unchecked")
      // &lt;editor-fold defaultstate="collapsed" desc="Generated Code"&gt;
      private void initComponents() {
  
          jScrollPane1 = new javax.swing.JScrollPane();
          jEditorPane1 = new Emotes();
  
          setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
  
          jScrollPane1.setViewportView(jEditorPane1);
  
          javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
          getContentPane().setLayout(layout);
          layout.setHorizontalGroup(
              layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
              .addGap(0, 400, Short.MAX_VALUE)
              .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                  .addGroup(layout.createSequentialGroup()
                      .addContainerGap()
                      .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 376, Short.MAX_VALUE)
                      .addContainerGap()))
          );
          layout.setVerticalGroup(
              layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
              .addGap(0, 300, Short.MAX_VALUE)
              .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                  .addGroup(layout.createSequentialGroup()
                      .addGap(51, 51, 51)
                      .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 229, javax.swing.GroupLayout.PREFERRED_SIZE)
                      .addContainerGap(20, Short.MAX_VALUE)))
          );
  
          pack();
      }// &lt;/editor-fold&gt;
  
      /**
       * @param args the command line arguments
       */
      public static void main(String args[]) {
          /* Set the Nimbus look and feel */
          //&lt;editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "&gt;
          /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
           * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
           */
          try {
              for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                  if ("Nimbus".equals(info.getName())) {
                      javax.swing.UIManager.setLookAndFeel(info.getClassName());
                      break;
                  }
              }
          } catch (ClassNotFoundException ex) {
              java.util.logging.Logger.getLogger(NewJDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
          } catch (InstantiationException ex) {
              java.util.logging.Logger.getLogger(NewJDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
          } catch (IllegalAccessException ex) {
              java.util.logging.Logger.getLogger(NewJDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
          } catch (javax.swing.UnsupportedLookAndFeelException ex) {
              java.util.logging.Logger.getLogger(NewJDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
          }
          //&lt;/editor-fold&gt;
  
          /* Create and display the dialog */
          java.awt.EventQueue.invokeLater(new Runnable() {
  
              public void run() {
                  NewJDialog dialog = new NewJDialog(new javax.swing.JFrame(), true);
                  dialog.addWindowListener(new java.awt.event.WindowAdapter() {
  
                      @Override
                      public void windowClosing(java.awt.event.WindowEvent e) {
                          System.exit(0);
                      }
                  });
                  dialog.setVisible(true);
              }
          });
      }
      // Variables declaration - do not modify
      private javax.swing.JEditorPane jEditorPane1;
      private javax.swing.JScrollPane jScrollPane1;
      // End of variables declaration
  }
  </code></pre>
  
  <p>And the emotes I use are: <img src="https://i.stack.imgur.com/Ztbwl.png" alt="enter image description here"> <img src="https://i.stack.imgur.com/Vfm0g.png" alt="enter image description here"> <img src="https://i.stack.imgur.com/Go3hR.png" alt="enter image description here"></p>