Determines if the component is visible in its window at the given screen location. : Swing Utilities « Swing JFC « Java






Determines if the component is visible in its window at the given screen location.

  
//package com.javadocking.util;

import java.awt.Component;
import java.awt.Point;
import java.awt.Window;

import javax.swing.JRootPane;
import javax.swing.SwingUtilities;


/**
 * This class contains a collection of static utility methods for Swing.
 * 
 * @author Heidi Rakels.
 */
public class SwingUtil
{
    /**
     * <p>
   * Determines if the component is visible in its window at the given screen location.
   * </p>
   *
   * @param   location  A location on the screen.
   * @param   component  A component in a window.
   * @return        True if the component is visible in its window at the given screen location.
   */
  public static boolean locationInComponentVisible(Point location, Component component)
  {
    
    // Get the root component in the window.
    JRootPane rootPane = getRootPane(component);
    if (rootPane != null)
    {
      Component rootComponent = rootPane.getContentPane();
      if (rootComponent != null)
      {
        // Get the location relative to this root component.
        Point locationInRoot = new Point(location);
        SwingUtilities.convertPointFromScreen(locationInRoot, rootComponent);
        
        // Get the deepest visible component at the given location.
        Component deepestComponent = SwingUtilities.getDeepestComponentAt(rootComponent, locationInRoot.x, locationInRoot.y);
        if (deepestComponent != null)
        {
          boolean result = SwingUtilities.isDescendingFrom(deepestComponent, component);
          return result;
        }
      }
    }
    
    return false;
    
  }
  /**
   * Gets the root pane of the given component.
   * 
   * @param   component    The component whose root pane is retrieved.
   * @return           The root pane of the component.
   */
  public static JRootPane getRootPane(Component component)
  {
    
    if (component instanceof JRootPane) {
      return (JRootPane)component;
    }
    if (component.getParent() != null) {
      return getRootPane(component.getParent());
    }
    
    // Get the window of the component.
    Window window = SwingUtilities.windowForComponent(component);
    return getRootPane(window);  
    
  }
}

   
    
  








Related examples in the same category

1.Swing Utilities getWindowAncestor
2.Swing invoke and wait
3.Swing invoke later
4.Getting the JFrame of a Component
5.Convert a coordinate relative to a component's bounds to screen coordinates
6.Convert a coordinate on a screen to a coordinate relative to a component's bounds
7.Handle long-running tasks in a Swing application
8.Swing worker Example
9.Center that window on the given desktop.
10.Returns the usable area of the screenReturns the usable area of the screen
11.Converts a Swing key stroke descriptor to a familiar Emacs-like nameConverts a Swing key stroke descriptor to a familiar Emacs-like name
12.Get Owning Frame for Component
13.Get Screen Bounds For
14.Get Top Frame
15.Get Top Level Ancestor
16.Change the sizes of all the passed buttons to be the size of the largest one.
17.Using SwingUtilities.updateComponentTreeUI to update UI by platform settingsUsing SwingUtilities.updateComponentTreeUI to update UI by platform settings
18.Repaints the parent of the given component.
19.Gets the root pane of the given component.
20.Gets the root pane of the window.
21.Gets the layered pane of the window of the given component.
22.Gets the content pane of the given window.
23.Verifies if the given point is visible on the screen.