Java Swing Cursor setCursorBusy(JComponent component)

Here you can find the source of setCursorBusy(JComponent component)

Description

Set cursor to busy and disable application input.

License

Open Source License

Parameter

Parameter Description
component Component within container to apply to

Declaration

public static void setCursorBusy(JComponent component) 

Method Source Code


//package com.java2s;
/*//from   w  w  w . ja  va2 s .c o m
 * Copyright 2004 - 2013 Wayne Grant
 *           2013 - 2016 Kai Kramer
 *
 * This file is part of KeyStore Explorer.
 *
 * KeyStore Explorer is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * KeyStore Explorer 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 for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with KeyStore Explorer.  If not, see <http://www.gnu.org/licenses/>.
 */

import java.awt.Component;
import java.awt.Container;
import java.awt.Cursor;
import java.awt.event.MouseAdapter;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JFrame;

public class Main {
    /**
     * Set cursor to busy and disable application input. This can be reversed by
     * a subsequent call to setCursorFree.
     *
     * @param frame
     *            Frame to apply to
     */
    public static void setCursorBusy(JFrame frame) {
        setCursorBusy(frame.getRootPane().getGlassPane());
    }

    /**
     * Set cursor to busy and disable application input. This can be reversed by
     * a subsequent call to setCursorFree.
     *
     * @param component
     *            Component within container to apply to
     */
    public static void setCursorBusy(JComponent component) {
        JDialog dialog = findContainingDialog(component);

        if (dialog != null) {
            setCursorBusy(dialog);
        } else {
            JFrame frame = findContainingFrame(component);

            if (frame != null) {
                setCursorBusy(frame);
            }
        }
    }

    /**
     * Set cursor to busy and disable application input. This can be reversed by
     * a subsequent call to setCursorFree.
     *
     * @param dialog
     *            Dialog to apply to
     */
    public static void setCursorBusy(JDialog dialog) {
        setCursorBusy(dialog.getRootPane().getGlassPane());
    }

    private static void setCursorBusy(Component glassPane) {
        glassPane.addMouseListener(new MouseAdapter() {
        });
        glassPane.setVisible(true);

        glassPane.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
    }

    private static JDialog findContainingDialog(JComponent component) {
        Container container = component.getParent();

        while (container != null) {
            if (container instanceof JDialog) {
                return (JDialog) container;
            }

            container = container.getParent();
        }

        return null;
    }

    private static JFrame findContainingFrame(JComponent component) {
        Container container = component.getParent();

        while (container != null) {
            if (container instanceof JFrame) {
                return (JFrame) container;
            }

            container = container.getParent();
        }

        return null;
    }
}

Related

  1. createCursor(URL url, Point hotSpot, String name)
  2. setCursor(JComponent comp, Cursor cur)
  3. setCursorDefault(Container cont)
  4. setWaitCursor(final Component c, final boolean wait)
  5. setWaitCursor(JComponent comp)
  6. showCursor(final Cursor cursor, final Component caller, final boolean includeParent, boolean immediate)