Java Code Examples for java.awt.Component#isVisible()

The following examples show how to use java.awt.Component#isVisible() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: ControlGridLayout.java    From pumpernickel with MIT License 6 votes vote down vote up
private List<List<Component>> createGrid(Container container) {
	int rowIndex = 0;
	List<List<Component>> grid = new ArrayList<>();
	for (Component child : container.getComponents()) {
		if (child.isVisible()) {
			List<Component> currentRow;
			if (rowIndex >= grid.size()) {
				currentRow = new ArrayList<>(columns);
				grid.add(currentRow);
			} else {
				currentRow = grid.get(rowIndex);
			}
			currentRow.add(child);

			if (currentRow.size() == columns) {
				rowIndex++;
			}
		}
	}
	return grid;
}
 
Example 2
Source File: HorizontalLayout.java    From visualvm with GNU General Public License v2.0 6 votes vote down vote up
public void layoutContainer(final Container parent) {
    final Insets insets = parent.getInsets();
    int posX = insets.left;
    final int posY = insets.top;
    final int height = parent.getHeight() - insets.top - insets.bottom;

    for (Component comp : parent.getComponents()) {
        if (comp.isVisible()) {
            Dimension pref = comp.getPreferredSize();
            if (proportionalHeight) {
                int h = Math.min(pref.height, height);
                int o = (height - h) / 2;
                comp.setBounds(posX, posY + o, pref.width, h);
            } else {
                comp.setBounds(posX, posY, pref.width, height);
            }
            posX += hGap;
            posX += pref.width;
        }
    }
}
 
Example 3
Source File: HorizontalLayout.java    From visualvm with GNU General Public License v2.0 6 votes vote down vote up
public Dimension preferredLayoutSize(final Container parent) {
    final Insets insets = parent.getInsets();
    final Dimension d = new Dimension(insets.left + insets.right,
                                      insets.top + insets.bottom);
    int maxHeight = 0;
    int visibleCount = 0;

    for (Component comp : parent.getComponents()) {
        if (comp.isVisible()) {
            final Dimension size = comp.getPreferredSize();
            maxHeight = Math.max(maxHeight, size.height);
            d.width += size.width;
            visibleCount++;
        }
    }

    d.width += (visibleCount - 1) * hGap;
    d.height += maxHeight;

    return d;
}
 
Example 4
Source File: VisibilityHandler.java    From netbeans with Apache License 2.0 5 votes vote down vote up
public final void handle(Component component) {
    if (component == null)
        throw new NullPointerException("component cannot be null"); // NOI18N

    if (listener != null && component != null)
        component.removeHierarchyListener(listener);

    this.component = component;
    wasVisible = component.isVisible();

    if (listener == null) listener = createListener();
    component.addHierarchyListener(listener);
}
 
Example 5
Source File: SBoxLayout.java    From stendhal with GNU General Public License v2.0 5 votes vote down vote up
/**
 * Lay out the components, when we have sufficient space to do so.
 *
 * @param parent the parent container of the components
 * @param realDim the dimensions of the space in use
 * @param startPosition top left corner
 * @param stretch the total amount to stretch the components
 */
private void layoutSufficientSpace(Container parent, Dimension realDim,
		Dimension startPosition, int stretch) {
	int remainingStretch = stretch;
	int remainingExpandable = expandable;

	// Easy - we got at least the dimensions we asked for
	for (Component c : parent.getComponents()) {
		// Skip hidden components
		if (c.isVisible()) {
			Dimension cPref = getPreferred(c);
			shrink(cPref, realDim);
			int xAlign = 0;
			int yAlign = 0;

			EnumSet<SLayout> flags = constraints.get(c);
			if (flags.contains(SLayout.EXPAND_PERPENDICULAR)) {
				d.setSecondary(cPref, d.getSecondary(realDim));
			} else {
				xAlign = getXAlignment(c, realDim);
				yAlign = getYAlignment(c, realDim);
			}

			if ((remainingStretch > 0) && flags.contains(SLayout.EXPAND_AXIAL)) {
				// Stretch the components that allow it, if needed
				int add = Math.max(1, remainingStretch / remainingExpandable);
				addToPrimary(cPref, add);
				remainingStretch -= add;
				remainingExpandable--;
			}
			c.setBounds(startPosition.width + xAlign, startPosition.height + yAlign, cPref.width, cPref.height);

			// Move the coordinates of the next component by the size of the
			// previous + padding
			shiftByPrimary(startPosition, cPref);
			addToPrimary(startPosition, padding);
		}
	}
}
 
Example 6
Source File: MultiBorderLayout.java    From workcraft with MIT License 5 votes vote down vote up
private Dimension sumHorizontal(final Iterable<Component> components, final DimensionGetter getter) {
    final Dimension dim = new Dimension();
    for (final Component c : components) {
        if (c.isVisible()) {
            final Dimension d = getter.get(c);
            dim.width += d.width + getHgap();
            dim.height = Math.max(d.height, dim.height);
        }
    }
    return dim;
}
 
Example 7
Source File: RequestFocusAndHideTest.java    From hottub with GNU General Public License v2.0 5 votes vote down vote up
public static void main(String[] args) throws InterruptedException, java.lang.reflect.InvocationTargetException
{
    final Frame frame = new Frame("the test");
    frame.setLayout(new FlowLayout());
    final Button btn1 = new Button("button 1");
    frame.add(btn1);
    frame.add(new Button("button 2"));
    frame.add(new Button("button 3"));
    frame.pack();
    frame.setVisible(true);

    Robot r = Util.createRobot();
    Util.waitForIdle(r);
    Util.clickOnComp(btn1, r);
    Util.waitForIdle(r);
    KeyboardFocusManager kfm = KeyboardFocusManager.getCurrentKeyboardFocusManager();
    if (kfm.getFocusOwner() != btn1) {
        throw new RuntimeException("test error: can not set focus on " + btn1 + ".");
    }

    EventQueue.invokeAndWait(new Runnable() {
            public void run() {
                final int n_comps = frame.getComponentCount();
                for (int i = 0; i < n_comps; ++i) {
                    frame.getComponent(i).setVisible(false);
                }
            }
        });
    Util.waitForIdle(r);
    final Component focus_owner = kfm.getFocusOwner();

    if (focus_owner != null && !focus_owner.isVisible()) {
        throw new RuntimeException("we have invisible focus owner");
    }
    System.out.println("test passed");
    frame.dispose();
}
 
Example 8
Source File: WrappingLayout.java    From MeteoInfo with GNU Lesser General Public License v3.0 5 votes vote down vote up
private int moveComponents(Container parent, int x, int y, int width,
        int height, int rowStart, int rowEnd,
        boolean ltr) {
    switch (align) {
        case LEFT:
            x += ltr ? 0 : width;
            break;
        case CENTER:
            x += width / 2;
            break;
        case RIGHT:
            x += ltr ? width : 0;
            break;
        case LEADING:
            break;
        case TRAILING:
            x += width;
            break;
    }
    for (int i = rowStart; i < rowEnd; i++) {
        Component c = parent.getComponent(i);
        if (c.isVisible()) {
            int cy;
            cy = y + (height - c.getHeight()) / 2;
            if (ltr) {
                c.setLocation(x, cy);
            } else {
                c.setLocation(parent.getWidth() - x - c.getWidth(), cy);
            }
            x += c.getWidth() + hgap;
        }
    }
    return height;
}
 
Example 9
Source File: SynthToolBarUI.java    From Java8CN with Apache License 2.0 5 votes vote down vote up
private boolean isGlue(Component c) {
    if (c.isVisible() && c instanceof Box.Filler) {
        Box.Filler f = (Box.Filler)c;
        Dimension min = f.getMinimumSize();
        Dimension pref = f.getPreferredSize();
        return min.width == 0 &&  min.height == 0 &&
                pref.width == 0 && pref.height == 0;
    }
    return false;
}
 
Example 10
Source File: ToolbarRow.java    From netbeans with Apache License 2.0 5 votes vote down vote up
private int getMinimumHeight() {
    int h = 0;
    for( Component c : getComponents() ) {
        if( !c.isVisible() )
            continue;
        Dimension d = c.getMinimumSize();
        if( d.height > h )
            h = d.height;
    }
    return h;
}
 
Example 11
Source File: SynthToolBarUI.java    From jdk1.8-source-analysis with Apache License 2.0 5 votes vote down vote up
private boolean isGlue(Component c) {
    if (c.isVisible() && c instanceof Box.Filler) {
        Box.Filler f = (Box.Filler)c;
        Dimension min = f.getMinimumSize();
        Dimension pref = f.getPreferredSize();
        return min.width == 0 &&  min.height == 0 &&
                pref.width == 0 && pref.height == 0;
    }
    return false;
}
 
Example 12
Source File: MultiBorderLayout.java    From workcraft with MIT License 5 votes vote down vote up
private Dimension sumVertical(final Iterable<Component> components, final DimensionGetter getter) {
    final Dimension dim = new Dimension();
    for (final Component c : components) {
        if (c.isVisible()) {
            final Dimension d = getter.get(c);
            dim.width = Math.max(d.width, dim.width);
            dim.height += d.height + getVgap();
        }
    }
    return dim;
}
 
Example 13
Source File: BasicPopupMenuUI.java    From jdk1.8-source-analysis with Apache License 2.0 5 votes vote down vote up
private static MenuElement nextEnabledChild(MenuElement e[],
                                            int fromIndex, int toIndex) {
    for (int i=fromIndex; i<=toIndex; i++) {
        if (e[i] != null) {
            Component comp = e[i].getComponent();
            if ( comp != null
                    && (comp.isEnabled() || UIManager.getBoolean("MenuItem.disabledAreNavigable"))
                    && comp.isVisible()) {
                return e[i];
            }
        }
    }
    return null;
}
 
Example 14
Source File: SwingTools.java    From rapidminer-studio with GNU Affero General Public License v3.0 5 votes vote down vote up
/**
 * Returns the first visible component, aka the component that is currently displayed. Can be used to find the
 * currently displayed card in a {@link java.awt.CardLayout}.
 *
 * @param parent
 * 		the container which contains all the cards
 * @return the component or {@code null} if no component of the parent is visible
 * @since 9.0.0
 */
public static Component findDisplayedComponent(Container parent) {
	for (Component comp : parent.getComponents()) {
		if (comp.isVisible()) {
			return comp;
		}
	}

	return null;
}
 
Example 15
Source File: BasicPopupMenuUI.java    From jdk8u-jdk with GNU General Public License v2.0 5 votes vote down vote up
private static MenuElement nextEnabledChild(MenuElement e[],
                                            int fromIndex, int toIndex) {
    for (int i=fromIndex; i<=toIndex; i++) {
        if (e[i] != null) {
            Component comp = e[i].getComponent();
            if ( comp != null
                    && (comp.isEnabled() || UIManager.getBoolean("MenuItem.disabledAreNavigable"))
                    && comp.isVisible()) {
                return e[i];
            }
        }
    }
    return null;
}
 
Example 16
Source File: RepaintArea.java    From openjdk-jdk8u-backup with GNU General Public License v2.0 4 votes vote down vote up
/**
 * Invokes paint and update on target Component with optimal
 * rectangular clip region.
 * If PAINT bounding rectangle is less than
 * MAX_BENEFIT_RATIO times the benefit, then the vertical and horizontal unions are
 * painted separately.  Otherwise the entire bounding rectangle is painted.
 *
 * @param   target Component to <code>paint</code> or <code>update</code>
 * @since   1.4
 */
public void paint(Object target, boolean shouldClearRectBeforePaint) {
    Component comp = (Component)target;

    if (isEmpty()) {
        return;
    }

    if (!comp.isVisible()) {
        return;
    }

    RepaintArea ra = this.cloneAndReset();

    if (!subtract(ra.paintRects[VERTICAL], ra.paintRects[HORIZONTAL])) {
        subtract(ra.paintRects[HORIZONTAL], ra.paintRects[VERTICAL]);
    }

    if (ra.paintRects[HORIZONTAL] != null && ra.paintRects[VERTICAL] != null) {
        Rectangle paintRect = ra.paintRects[HORIZONTAL].union(ra.paintRects[VERTICAL]);
        int square = paintRect.width * paintRect.height;
        int benefit = square - ra.paintRects[HORIZONTAL].width
            * ra.paintRects[HORIZONTAL].height - ra.paintRects[VERTICAL].width
            * ra.paintRects[VERTICAL].height;
        // if benefit is comparable with bounding box
        if (MAX_BENEFIT_RATIO * benefit < square) {
            ra.paintRects[HORIZONTAL] = paintRect;
            ra.paintRects[VERTICAL] = null;
        }
    }
    for (int i = 0; i < paintRects.length; i++) {
        if (ra.paintRects[i] != null
            && !ra.paintRects[i].isEmpty())
        {
            // Should use separate Graphics for each paint() call,
            // since paint() can change Graphics state for next call.
            Graphics g = comp.getGraphics();
            if (g != null) {
                try {
                    g.setClip(ra.paintRects[i]);
                    if (i == UPDATE) {
                        updateComponent(comp, g);
                    } else {
                        if (shouldClearRectBeforePaint) {
                            g.clearRect( ra.paintRects[i].x,
                                         ra.paintRects[i].y,
                                         ra.paintRects[i].width,
                                         ra.paintRects[i].height);
                        }
                        paintComponent(comp, g);
                    }
                } finally {
                    g.dispose();
                }
            }
        }
    }
}
 
Example 17
Source File: WrapLayout.java    From openvisualtraceroute with GNU Lesser General Public License v3.0 4 votes vote down vote up
/**
 * Returns the minimum or preferred dimension needed to layout the target
 * container.
 *
 * @param target target to get layout size for
 * @param preferred should preferred size be calculated
 * @return the dimension to layout the target container
 */
private Dimension layoutSize(final Container target, final boolean preferred) {
	synchronized (target.getTreeLock()) {
		//  Each row must fit with the width allocated to the containter.
		//  When the container width = 0, the preferred width of the container
		//  has not yet been calculated so lets ask for the maximum.

		int targetWidth = target.getSize().width;

		if (targetWidth == 0) {
			targetWidth = Integer.MAX_VALUE;
		}

		final int hgap = getHgap();
		final int vgap = getVgap();
		final Insets insets = target.getInsets();
		final int horizontalInsetsAndGap = insets.left + insets.right + (hgap * 2);
		final int maxWidth = targetWidth - horizontalInsetsAndGap;

		//  Fit components into the allowed width

		final Dimension dim = new Dimension(0, 0);
		int rowWidth = 0;
		int rowHeight = 0;

		final int nmembers = target.getComponentCount();

		for (int i = 0; i < nmembers; i++) {
			final Component m = target.getComponent(i);

			if (m.isVisible()) {
				final Dimension d = preferred ? m.getPreferredSize() : m.getMinimumSize();

				//  Can't add the component to current row. Start a new row.

				if (rowWidth + d.width > maxWidth) {
					addRow(dim, rowWidth, rowHeight);
					rowWidth = 0;
					rowHeight = 0;
				}

				//  Add a horizontal gap for all components after the first

				if (rowWidth != 0) {
					rowWidth += hgap;
				}

				rowWidth += d.width;
				rowHeight = Math.max(rowHeight, d.height);
			}
		}

		addRow(dim, rowWidth, rowHeight);

		dim.width += horizontalInsetsAndGap;
		dim.height += insets.top + insets.bottom + vgap * 2;

		//	When using a scroll pane or the DecoratedLookAndFeel we need to
		//  make sure the preferred size is less than the size of the
		//  target containter so shrinking the container size works
		//  correctly. Removing the horizontal gap is an easy way to do this.

		final Container scrollPane = SwingUtilities.getAncestorOfClass(JScrollPane.class, target);

		if (scrollPane != null && target.isValid()) {
			dim.width -= (hgap + 1);
		}

		return dim;
	}
}
 
Example 18
Source File: FilterBar.java    From pcgen with GNU Lesser General Public License v2.1 4 votes vote down vote up
@Override
public void layoutContainer(Container target)
{
	synchronized (target.getTreeLock())
	{
		Insets insets = target.getInsets();
		int maxwidth = target.getWidth() - (insets.left + insets.right + getHgap() * 2);
		int nmembers = target.getComponentCount();
		int x = 0;
		int y = insets.top + getVgap();
		int rowh = 0;
		int start = 0;

		boolean ltr = target.getComponentOrientation().isLeftToRight();
		SizeRequirements[] xChildren = new SizeRequirements[nmembers];
		SizeRequirements[] yChildren = new SizeRequirements[nmembers];
		for (int i = 0; i < nmembers; i++)
		{
			Component c = target.getComponent(i);
			if (!c.isVisible())
			{
				xChildren[i] = new SizeRequirements(0, 0, 0, c.getAlignmentX());
				yChildren[i] = new SizeRequirements(0, 0, 0, c.getAlignmentY());
			}
			else
			{
				Dimension min = c.getMinimumSize();
				Dimension typ = c.getPreferredSize();
				Dimension max = c.getMaximumSize();
				xChildren[i] = new SizeRequirements(min.width, typ.width, max.width, c.getAlignmentX());
				yChildren[i] = new SizeRequirements(min.height, typ.height, max.height, c.getAlignmentY());

				if ((x == 0) || ((x + typ.width) <= maxwidth))
				{
					if (x > 0)
					{
						x += getHgap();
					}
					x += typ.width;
					rowh = Math.max(rowh, typ.height);
				}
				else
				{
					layoutComponents(target, insets.left + getHgap(), y, maxwidth, rowh, xChildren, yChildren,
						start, i, ltr);

					x = typ.width;
					y += getVgap() + rowh;
					rowh = typ.height;
					start = i;
				}
			}
		}
		layoutComponents(target, insets.left + getHgap(), y, maxwidth, rowh, xChildren, yChildren, start,
			nmembers, ltr);
	}
}
 
Example 19
Source File: JFlowPanel.java    From nordpos with GNU General Public License v3.0 4 votes vote down vote up
private Dimension calculateFlowLayout(boolean bDoChilds) {
    Dimension dim = new Dimension(0, hgap);
    
    int maxWidth;
    if (getParent() != null && getParent() instanceof JViewport) {
        JViewport viewport = (JViewport) getParent();
        maxWidth = viewport.getExtentSize().width;
    } else if (getParent() != null){
        maxWidth = getParent().getWidth();
    } else {
        maxWidth = getWidth();
    }
    
    synchronized (getTreeLock()) {
        int compCount = getComponentCount();
        int maxRowWidth = 0;
        int maxRowHeight = 0;
        int x = 0;

        for (int i = 0 ; i < compCount ; i++) {
            Component m = getComponent(i);
            if (m.isVisible()) {
                Dimension d = m.getPreferredSize();
                if (x == 0 || (x + hgap + d.width + hgap) <= maxWidth) {
                    // continuamos con esta linea
                    x += hgap;
                    if (bDoChilds) m.setBounds(getPosition(x, maxWidth - d.width), dim.height, d.width, d.height);
                    x += d.width;
                    if (d.height > maxRowHeight) {
                        maxRowHeight = d.height;
                    }
                } else {
                    // nueva linea
                    dim.height += maxRowHeight + vgap;
                    if (bDoChilds) m.setBounds(getPosition(hgap, maxWidth - d.width), dim.height, d.width, d.height);
                    if (x > maxRowWidth) {
                        maxRowWidth = x;
                    }
                    x = hgap + d.width;
                    maxRowHeight = d.height;
                }
            }
        }

        // calculamos la ultima linea.
        dim.height += maxRowHeight + vgap;
        if (x > maxRowWidth) {
            maxRowWidth = x;
        }
        dim.width = maxRowWidth;
    }
    return dim;
}
 
Example 20
Source File: ProfilerPopup.java    From netbeans with Apache License 2.0 4 votes vote down vote up
private static boolean focusable(Component c) {
    if (c instanceof JLabel || c instanceof Box.Filler) return false;
    return c.isVisible() && c.isEnabled() && c.isFocusable();
}