code: public final void setCurrentByte(final int n) {
          if (SwingUtilities.isEventDispatchThread()) {
              setCurrentByteIntern(n);
          } else {
              try {
                  SwingUtilities.invokeLater(new Runnable() {
                      public void run() {
                          setCurrentByteIntern(n);
                      }
                  });
              } catch (final Exception ex) {
                  ignore();
              }
          }
      }
docs: Set the number of the current byte transferred. If called outside the EDT
  this method will switch to the UI thread using
  <code>SwingUtilities.invokeLater(Runnable)</code>.
  
  @param n
  The N value in "N of M".