@Override
      public void componentResized(ComponentEvent e) {
        component.removeComponentListener(this);
        if (!future.isCancelled()) {
          try {
            runnable.run();
            future.complete(null);
          }
          catch (Throwable ex) {
            future.completeExceptionally(ex);
          }
        }
      }
@Override
      public void componentResized(ComponentEvent e)