Java Swing UI Thread Event invokeInEventDispatchThread(@Nonnull Runnable runnable)

Here you can find the source of invokeInEventDispatchThread(@Nonnull Runnable runnable)

Description

Invokes the runnable within the EDT

License

Open Source License

Parameter

Parameter Description
runnable a Runnable object.

Declaration

public static void invokeInEventDispatchThread(@Nonnull Runnable runnable) 

Method Source Code

//package com.java2s;
/**//w  ww .ja v  a 2 s  .c o m
 * Copyright (C) cedarsoft GmbH.
 *
 * Licensed under the GNU General Public License version 3 (the "License")
 * with Classpath Exception; you may not use this file except in compliance
 * with the License. You may obtain a copy of the License at
 *
 *         http://www.cedarsoft.org/gpl3ce
 *         (GPL 3 with Classpath Exception)
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 3 only, as
 * published by the Free Software Foundation. cedarsoft GmbH designates this
 * particular file as subject to the "Classpath" exception as provided
 * by cedarsoft GmbH in the LICENSE file that accompanied this code.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 3 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 3 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact cedarsoft GmbH, 72810 Gomaringen, Germany,
 * or visit www.cedarsoft.com if you need additional information or
 * have any questions.
 */

import javax.annotation.Nonnull;

import javax.swing.SwingUtilities;
import java.lang.reflect.InvocationTargetException;

public class Main {
    /**
     * Invokes the runnable within the EDT
     *
     * @param runnable a Runnable object.
     */
    public static void invokeInEventDispatchThread(@Nonnull Runnable runnable) {
        if (isEventDispatchThread()) {
            runnable.run();
        } else {
            try {
                SwingUtilities.invokeAndWait(runnable);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            } catch (InvocationTargetException e) {
                Throwable targetException = e.getTargetException();
                if (targetException instanceof RuntimeException) {
                    throw (RuntimeException) targetException;
                }
                //noinspection ThrowInsideCatchBlockWhichIgnoresCaughtException
                throw new RuntimeException(targetException);
            }
        }
    }

    /**
     * <p>isEventDispatchThread</p>
     *
     * @return a boolean.
     */
    public static boolean isEventDispatchThread() {
        return SwingUtilities.isEventDispatchThread();
    }
}

Related

  1. invokeAndWaitFromAnyThread(Runnable r)
  2. invokeAndWaitSafely(final Runnable runnable)
  3. invokeAndWaitUnchecked(Runnable runnable)
  4. invokeEDT(final Runnable runnable)
  5. invokeInAWTThread(Runnable r)
  6. invokeInSwingThread(Runnable r)
  7. invokeLater(final Runnable r)
  8. invokeLater(Runnable runnable, boolean forceLater)
  9. invokeLaterEDT(final Runnable runnable)