Here you can find the source of showCursor(final Cursor cursor, final Component caller, final boolean includeParent, boolean immediate)
private static void showCursor(final Cursor cursor, final Component caller, final boolean includeParent, boolean immediate)
//package com.java2s; /*/* w w w . ja v a 2s . co m*/ * WbSwingUtilities.java * * This file is part of SQL Workbench/J, http://www.sql-workbench.net * * Copyright 2002-2015, Thomas Kellerer * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at. * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * To contact the author please send an email to: support@sql-workbench.net * */ import javax.swing.*; import java.awt.*; public class Main { private static void showCursor(final Cursor cursor, final Component caller, final boolean includeParent, boolean immediate) { if (caller == null) return; Runnable r = new Runnable() { @Override public void run() { caller.setCursor(cursor); if (includeParent) { final Window w = getWindowAncestor(caller); if (w != null) { w.setCursor(cursor); } } } }; if (EventQueue.isDispatchThread()) { r.run(); } else { if (immediate) { try { EventQueue.invokeAndWait(r); } catch (Throwable th) { } } else { EventQueue.invokeLater(r); } } } public static Window getWindowAncestor(Component caller) { if (caller == null) return null; if (caller instanceof Window) { return (Window) caller; } return SwingUtilities.getWindowAncestor(caller); } /** * A simple wrapper around EventQueue.invokeLater(). * * @param runner the task to execute */ public static void invokeLater(Runnable runner) { EventQueue.invokeLater(runner); } }