/** * Returns the preferred size of the viewport for a view component. For example the preferredSize * of a JList component is the size required to acommodate all of the cells in its list however * the value of preferredScrollableViewportSize is the size required for * JList.getVisibleRowCount() rows. A component without any properties that would effect the * viewport size should just return getPreferredSize() here. * * @return The preferredSize of a JViewport whose view is this Scrollable. * @see JViewport#getPreferredSize */ public Dimension getPreferredScrollableViewportSize() { Dimension size = getPreferredSize(); Dimension retval = new Dimension(); retval.width = size.width > 600 ? 600 : size.width; retval.height = size.height > 400 ? 400 : size.height; return retval; }
/** * Query the maximum image size allowed. * * @return the maximum image size allowed. */ public Dimension getMaximumSize() { final Dimension retval = new Dimension(); final Hashtable depthMap = getDepthMap(); int item = 0; synchronized (getActiveVector()) { final Enumeration keys = getDepthMap().keys(); while (keys.hasMoreElements()) { final Bookmark bookmark = (Bookmark) keys.nextElement(); final Rectangle bounds = getTextBounds(item++, bookmark, depthMap.get(bookmark)); final int width = bounds.x + bounds.width; if (width > retval.width) { retval.width = width; } retval.height = bounds.y + bounds.height; } } retval.width += (2 * getFontMetrics(getFont()).getMaxAdvance()); retval.height += (2 * getFontHeight()); return retval; }
public void setSizeRatio(double x, double y) { xRatio = x; yRatio = y; if (x > 1.0) xRatio = x - 1.0; if (y > 1.0) yRatio = y - 1.0; if (defDim.width <= 0) defDim = getPreferredSize(); curLoc.x = (int) ((double) defLoc.x * xRatio); curLoc.y = (int) ((double) defLoc.y * yRatio); curDim.width = (int) ((double) defDim.width * xRatio); curDim.height = (int) ((double) defDim.height * yRatio); if (!inEditMode) setBounds(curLoc.x, curLoc.y, curDim.width, curDim.height); }
/** * Sets the size of the Popup window using a <code>Dimension</code> object. This is equivalent to * <code>setPreferredSize(d)</code>. * * @param d the <code>Dimension</code> specifying the new size of this component. * @beaninfo description: The size of the popup menu */ public void setPopupSize(Dimension d) { Dimension oldSize = getPreferredSize(); setPreferredSize(d); if (popup != null) { Dimension newSize = getPreferredSize(); if (!oldSize.equals(newSize)) { popup = getPopup(); } } }
public void setEditMode(boolean s) { twin.setEditMode(s); setOpaque(s); if (s) { addMouseListener(ml); curLoc.x = defLoc.x; curLoc.y = defLoc.y; defDim = getPreferredSize(); curDim.width = defDim.width; curDim.height = defDim.height; } else removeMouseListener(ml); inEditMode = s; }
public void reshape(int x, int y, int w, int h) { if (inEditMode) { defLoc.x = x; defLoc.y = y; defDim.width = w; defDim.height = h; } curLoc.x = x; curLoc.y = y; curDim.width = w; curDim.height = h; super.reshape(x, y, w, h); }
public void setSizeRatio(double x, double y) { double rx = x; double ry = y; if (rx > 1.0) rx = x - 1.0; if (ry > 1.0) ry = y - 1.0; if (defDim.width <= 0) defDim = getPreferredSize(); curLoc.x = (int) ((double) defLoc.x * rx); curLoc.y = (int) ((double) defLoc.y * ry); curDim.width = (int) ((double) defDim.width * rx); curDim.height = (int) ((double) defDim.height * ry); if (!inEditMode) setBounds(curLoc.x, curLoc.y, curDim.width, curDim.height); twin.setSizeRatio(x, y); }
protected void resizeDesktop() { int x = 0; int y = 0; JScrollPane scrollPane = getScrollPane(); Insets scrollInsets = getScrollPaneInsets(); if (scrollPane != null) { JInternalFrame allFrames[] = desktop.getAllFrames(); for (int i = 0; i < allFrames.length; i++) { if (allFrames[i].getX() + allFrames[i].getWidth() > x) { x = allFrames[i].getX() + allFrames[i].getWidth(); } if (allFrames[i].getY() + allFrames[i].getHeight() > y) { y = allFrames[i].getY() + allFrames[i].getHeight(); } } Dimension d = scrollPane.getVisibleRect().getSize(); if (scrollPane.getBorder() != null) { d.setSize( d.getWidth() - scrollInsets.left - scrollInsets.right, d.getHeight() - scrollInsets.top - scrollInsets.bottom); } if (x <= d.getWidth()) x = ((int) d.getWidth()) - 20; if (y <= d.getHeight()) y = ((int) d.getHeight()) - 20; desktop.setAllSize(x, y); scrollPane.invalidate(); scrollPane.validate(); } }
public void reshape(int x, int y, int w, int h) { if (inEditMode) { defLoc.x = x; defLoc.y = y; defDim.width = w; defDim.height = h; } curLoc.x = x; curLoc.y = y; curDim.width = w; curDim.height = h; if (!inEditMode) { if ((h != nHeight) || (h < rHeight)) { adjustFont(w, h); } } super.reshape(x, y, w, h); }
/** Calculate the width needed to display the maximum line number */ private void setPreferredWidth() { Element root = component.getDocument().getDefaultRootElement(); int lines = root.getElementCount(); int digits = Math.max(String.valueOf(lines).length(), minimumDisplayDigits); // Update sizes when number of digits in the line number changes if (lastDigits != digits) { lastDigits = digits; FontMetrics fontMetrics = getFontMetrics(getFont()); int width = fontMetrics.charWidth('0') * digits; Insets insets = getInsets(); int preferredWidth = insets.left + insets.right + width; Dimension d = getPreferredSize(); d.setSize(preferredWidth, HEIGHT); setPreferredSize(d); setSize(d); } }
public void setEditMode(boolean s) { if (s) { addMouseListener(ml); setOpaque(s); if (font != null) { setFont(font); fontH = font.getSize(); rHeight = fontH; } defDim = getPreferredSize(); curLoc.x = defLoc.x; curLoc.y = defLoc.y; curDim.width = defDim.width; curDim.height = defDim.height; xRatio = 1.0; yRatio = 1.0; } else { removeMouseListener(ml); if ((bg != null) || (isActive < 1)) setOpaque(true); else setOpaque(false); } inEditMode = s; }
// Set the width/height of columns/rows by the largest rendering entry private void customiseMinimumDimensions(Dimension dim, int row, int column) { TableColumn tableColumn = getColumnModel().getColumn(column); // this required extra margin padding is a mystery to me... dim.setSize(dim.width + getColumnMargin(), dim.height + getRowMargin()); // potential bug: refresh() is needed to reduce size of unusually large temporary entries if (tableColumn.getWidth() < dim.width) { tableColumn.setMinWidth(dim.width); if (column == 0) { tableColumn.setMaxWidth(dim.width); } } if (getRowHeight(row) < dim.height) { setRowHeight(row, dim.height); } }
public void setNormalSize() { JScrollPane scrollPane = getScrollPane(); int x = 0; int y = 0; Insets scrollInsets = getScrollPaneInsets(); if (scrollPane != null) { Dimension d = scrollPane.getVisibleRect().getSize(); if (scrollPane.getBorder() != null) { d.setSize( d.getWidth() - scrollInsets.left - scrollInsets.right, d.getHeight() - scrollInsets.top - scrollInsets.bottom); } d.setSize(d.getWidth() - 20, d.getHeight() - 20); desktop.setAllSize(x, y); scrollPane.invalidate(); scrollPane.validate(); } }
public void componentResized(ComponentEvent e) { Dimension dim = getSize(); dim.height -= 75; dim.width -= 50; graph.setDimensions(dim); }