javax.swing.JComponent#getPreferredSize ( )源码实例Demo

下面列出了javax.swing.JComponent#getPreferredSize ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: xyTalk-pc   文件: GraphicUtils.java
/**
    * Makes all Compontens the same Size
    * 
    * @param comps
    */
   public static void makeSameSize(JComponent... comps) {
if (comps.length == 0) {
    return;
}

int max = 0;
for (JComponent comp1 : comps) {
    int w = comp1.getPreferredSize().width;
    max = w > max ? w : max;
}

Dimension dim = new Dimension(max, comps[0].getPreferredSize().height);
for (JComponent comp : comps) {
    comp.setPreferredSize(dim);
}
   }
 
源代码2 项目: netbeans   文件: HideableBarRenderer.java
public void paint(Graphics g) {
    g.setColor(getBackground());
    g.fillRect(location.x, location.y, size.width, size.height);
    
    JComponent component = mainRenderer.getComponent();
    int componentWidth = component.getPreferredSize().width;
    int componentX = size.width - componentWidth;
    
    mainRenderer.move(location.x + componentX, location.y);
    component.setSize(componentWidth, size.height);
    component.paint(g);
    
    if (numberPercentRenderer == null || numberPercentRenderer.valueRenderers()[1].getComponent().isVisible()) {
        int freeWidth = size.width - maxRendererWidth - renderersGap();
        if (freeWidth >= MIN_BAR_WIDTH) {
            barRenderer.setSize(Math.min(freeWidth, MAX_BAR_WIDTH), size.height);
            barRenderer.move(location.x, location.y);
            barRenderer.paint(g);
        }
    }
}
 
源代码3 项目: netbeans   文件: DataView.java
public Dimension preferredLayoutSize(Container parent) {
    JComponent filter = filterPanel;
    if (filter != null && !filter.isVisible()) filter = null;
    
    JComponent search = searchPanel;
    if (search != null && !search.isVisible()) search = null;
    
    Dimension dim = new Dimension();
    
    if (filter != null && search != null) {
        Dimension dim1 = filter.getPreferredSize();
        Dimension dim2 = search.getPreferredSize();
        dim.width = dim1.width + dim2.width + 1;
        dim.height = Math.max(dim1.height, dim2.height);
    } else if (filter != null) {
        dim = filter.getPreferredSize();
    } else if (search != null) {
        dim = search.getPreferredSize();
    }
    
    if ((filter != null || search != null) && hasBottomFilterFindMargin())
        dim.height += 1;
    
    return dim;
}
 
源代码4 项目: keystore-explorer   文件: JTicker.java
/**
 * Calculate the positions of each of the items.
 */
protected void calculatePositionArray() {
	if (model == null) {
		return;
	}

	int pos = 0;
	int items = model.getSize();
	positions = new int[items + 1];
	positions[0] = 0;

	for (int i = 0; i < items; i++) {
		Object value = model.getElementAt(i);
		JComponent component = renderer.getTickerRendererComponent(this, value);
		Dimension size = component.getPreferredSize();
		pos += size.width + gap;
		positions[i + 1] = pos;
	}
}
 
源代码5 项目: visualvm   文件: MemorySamplerViewSupport.java
public Dimension preferredLayoutSize(Container parent) {
    JComponent filter = filterPanel;
    if (filter != null && !filter.isVisible()) filter = null;

    JComponent search = searchPanel;
    if (search != null && !search.isVisible()) search = null;

    Dimension dim = new Dimension();

    if (filter != null && search != null) {
        Dimension dim1 = filter.getPreferredSize();
        Dimension dim2 = search.getPreferredSize();
        dim.width = dim1.width + dim2.width + 1;
        dim.height = Math.max(dim1.height, dim2.height);
    } else if (filter != null) {
        dim = filter.getPreferredSize();
    } else if (search != null) {
        dim = search.getPreferredSize();
    }

    if ((filter != null || search != null) /*&& hasBottomFilterFindMargin()*/)
        dim.height += 1;

    return dim;
}
 
源代码6 项目: osp   文件: DataTable.java
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col) {
  // value is column name
  String name = (value==null) ? "" : value.toString(); //$NON-NLS-1$
  textLine.setText(name);
  if (OSPRuntime.isMac()) {
  	name = TeXParser.removeSubscripting(name);
  }
  Component c = renderer.getTableCellRendererComponent(table, name, isSelected, hasFocus, row, col);
  if (!(c instanceof JComponent)) {
    return c;
  }
  JComponent comp = (JComponent) c;
  int sortCol = decorator.getSortedColumn();
  Font font = comp.getFont();
  if (OSPRuntime.isMac()) {
  	// textline doesn't work on OSX
    comp.setFont((sortCol!=convertColumnIndexToModel(col))? 
    		font.deriveFont(Font.PLAIN) : 
    		font.deriveFont(Font.BOLD));
    if (comp instanceof JLabel) {
    	((JLabel)comp).setHorizontalAlignment(SwingConstants.CENTER);
    }
    return comp;
  }
  java.awt.Dimension dim = comp.getPreferredSize();
  dim.height += 1;
  panel.setPreferredSize(dim);
  javax.swing.border.Border border = comp.getBorder();
  if (border instanceof javax.swing.border.EmptyBorder) {
    border = BorderFactory.createLineBorder(Color.LIGHT_GRAY);
  }
  panel.setBorder(border);
  // set font: bold if sorted column
  textLine.setFont((sortCol!=convertColumnIndexToModel(col)) ? font : font.deriveFont(Font.BOLD));
  textLine.setColor(comp.getForeground());
  textLine.setBackground(comp.getBackground());
  panel.setBackground(comp.getBackground());
  return panel;
}
 
源代码7 项目: pumpernickel   文件: InspectorLayoutPlacement.java
private int getBaseline(JComponent c) {
	if (c != null) {
		Dimension d = c.getPreferredSize();
		int b = c.getBaseline(d.width, d.height);
		if (b > 0) {
			return b;
		}
	}
	return -1;
}
 
源代码8 项目: netbeans   文件: RendererPropertyDisplayer.java
public Dimension getPreferredSize() {
    //Optimize it shows 16% of painting time is in this call.  In some
    //cases it will be called more than once, so cache the return value
    if (prefSize == null) {
        JComponent jc = getRenderer(this);
        prefSize = jc.getPreferredSize();
    }

    return prefSize;
}
 
private void installInLayeredPane(JComponent component) {
    JLayeredPane layeredPane = getRootPane().getLayeredPane();
    layeredPane.add(component, JLayeredPane.PALETTE_LAYER, 20);
    Dimension size = component.getPreferredSize();
    component.setSize(size);
    component.setLocation((getWidth() - size.width) / 2,
            (getHeight() - size.height) / 2);
    component.revalidate();
    component.setVisible(true);
}
 
/**
 * Creates a swing component that either consists of the only available option or shows a popup list of possible actions.
 *
 * @param exampleSetSupplier
 * 		the current exampleSetSupplier that should be used fur further actions
 * @return a Button or a PopupMenu
 */
public static JComponent createResultActionsComponent(Supplier<ExampleSet> exampleSetSupplier) {
	final List<ResultActionGuiProvider> actions = ResultTabActionRegistry.INSTANCE.getActions();
	if (actions.isEmpty()) {
		return null;
	}

	final JPanel actionsPanel = new JPanel();
	actionsPanel.setLayout(new GridBagLayout());
	actionsPanel.setOpaque(false);

	actionsPanel.setBorder(BorderFactory.createEmptyBorder(6, 6, 6, 0));
	GridBagConstraints gbc = new GridBagConstraints();
	gbc.gridx = 0;
	gbc.gridy = 0;
	gbc.anchor = GridBagConstraints.WEST;

	for (ResultActionGuiProvider action : actions) {
		final JComponent component = action.createComponent(exampleSetSupplier);
		final Dimension preferredSize = component.getPreferredSize();
		if (preferredSize.getWidth() > MAX_COMPONENT_WIDTH || preferredSize.getHeight() > MAX_COMPONENT_HEIGHT) {
			preferredSize.setSize(Math.min(preferredSize.width, MAX_COMPONENT_WIDTH), Math.min(preferredSize.height, MAX_COMPONENT_HEIGHT));
		}
		actionsPanel.add(component, gbc);
		gbc.gridx++;
	}
	return actionsPanel;
}
 
源代码11 项目: pumpernickel   文件: SplayedLayout.java
@Override
public void layoutContainer(Container parent) {
	JComponent[] components = getComponents(parent);
	if (components.length == 0) {
		return;
	}

	Border border = ((JComponent) parent).getBorder();
	Insets i = border == null ? new Insets(0, 0, 0, 0) : border
			.getBorderInsets(parent);
	int x = i.left;
	int y = i.top;
	int width = parent.getWidth() - i.left - i.right;
	int height = parent.getHeight() - i.top - i.bottom;

	int separators = components.length - 1;
	int requestedSize = horizontal ? separators * separatorSize.width
			: separators * separatorSize.height;
	LinkedHashMap<JComponent, Dimension> preferredSize = new LinkedHashMap<>(
			components.length);
	for (JComponent c : components) {
		Dimension d = c.getPreferredSize();
		preferredSize.put(c, d);
		requestedSize += horizontal ? d.width : d.height;
	}

	int max = horizontal ? width : height;
	Plan plan;
	if (requestedSize <= max) {
		plan = layoutContainerWithExtra((JComponent) parent, preferredSize,
				requestedSize, x, y, width, height);
	} else {
		plan = layoutContainerWithConstrainedSize((JComponent) parent,
				preferredSize, x, y, width, height);
	}
	plan.install();
}
 
源代码12 项目: triplea   文件: AbstractUndoableMovesPanel.java
private void initLayout() {
  removeAll();
  setLayout(new BorderLayout());
  final JPanel items = new JPanel();
  items.setLayout(new BoxLayout(items, BoxLayout.Y_AXIS));
  // we want the newest move at the top
  moves = new ArrayList<>(moves);
  Collections.reverse(moves);
  final Iterator<AbstractUndoableMove> iter = moves.iterator();
  if (iter.hasNext()) {
    add(
        new JLabel((this instanceof UndoablePlacementsPanel) ? "Placements:" : "Moves:"),
        BorderLayout.NORTH);
  }
  int scrollIncrement = 10;
  final Dimension separatorSize = new Dimension(150, 20);
  while (iter.hasNext()) {
    final AbstractUndoableMove item = iter.next();
    final JComponent moveComponent = newComponentForMove(item);
    scrollIncrement = moveComponent.getPreferredSize().height;
    items.add(moveComponent);
    if (iter.hasNext()) {
      final JSeparator separator = new JSeparator(SwingConstants.HORIZONTAL);
      separator.setPreferredSize(separatorSize);
      separator.setMaximumSize(separatorSize);
      items.add(separator);
    }
  }
  if (movePanel.getUndoableMoves() != null && movePanel.getUndoableMoves().size() > 1) {
    final JButton undoAllButton = new JButton("Undo All");
    undoAllButton.addActionListener(new UndoAllMovesActionListener());
    items.add(undoAllButton);
  }

  final int scrollIncrementFinal = scrollIncrement + separatorSize.height;
  // JScrollPane scroll = new JScrollPane(items);
  scroll =
      new JScrollPane(items) {
        private static final long serialVersionUID = -1064967105431785533L;

        @Override
        public void paint(final Graphics g) {
          if (previousVisibleIndex != null) {
            items.scrollRectToVisible(
                new Rectangle(
                    0,
                    scrollIncrementFinal * (moves.size() - previousVisibleIndex),
                    1,
                    scrollIncrementFinal));
            previousVisibleIndex = null;
          }
          super.paint(g);
        }
      };
  scroll.setBorder(null);
  scroll.getVerticalScrollBar().setUnitIncrement(scrollIncrementFinal);
  if (scrollBarPreviousValue != null) {
    scroll.getVerticalScrollBar().setValue(scrollBarPreviousValue);
    scrollBarPreviousValue = null;
  }
  add(scroll, BorderLayout.CENTER);
  SwingUtilities.invokeLater(this::validate);
}
 
源代码13 项目: intellij   文件: UiUtil.java
public static void setPreferredWidth(JComponent component, int width) {
  int height = component.getPreferredSize().height;
  component.setPreferredSize(new Dimension(width, height));
}
 
源代码14 项目: azure-devops-intellij   文件: SwingHelper.java
public static void setPreferredHeight(final JComponent component, final int height) {
    final Dimension size = component.getPreferredSize();
    size.setSize(size.getWidth(), JBUI.scale(height));
    component.setPreferredSize(size);
}
 
源代码15 项目: seaglass   文件: SeaGlassRootPaneUI.java
/**
 * Instructs the layout manager to perform the layout for the specified
 * container.
 *
 * @param parent the Container for which this layout manager is being
 *               used
 */
public void layoutContainer(Container parent) {
    JRootPane root  = (JRootPane) parent;
    Rectangle b     = root.getBounds();
    Insets    i     = root.getInsets();
    int       nextY = 0;
    int       w     = b.width - i.right - i.left;
    int       h     = b.height - i.top - i.bottom;

    if (root.getLayeredPane() != null) {
        root.getLayeredPane().setBounds(i.left, i.top, w, h);
    }

    if (root.getGlassPane() != null) {
        root.getGlassPane().setBounds(i.left, i.top, w, h);
    }
    // Note: This is laying out the children in the layeredPane,
    // technically, these are not our children.
    if (root.getWindowDecorationStyle() != JRootPane.NONE && (root.getUI() instanceof SeaGlassRootPaneUI)) {
        JComponent titlePane = ((SeaGlassRootPaneUI) root.getUI()).getTitlePane();

        if (titlePane != null) {
            Dimension tpd = titlePane.getPreferredSize();

            if (tpd != null) {
                int tpHeight = tpd.height;

                titlePane.setBounds(0, 0, w, tpHeight);
                nextY += tpHeight;
            }
        }
    }

    if (root.getJMenuBar() != null) {
        boolean   menuInTitle = (root.getClientProperty("JRootPane.MenuInTitle") == Boolean.TRUE);
        Dimension mbd         = root.getJMenuBar().getPreferredSize();
        int x = menuInTitle? 20 : 0;
        root.getJMenuBar().setBounds(x, menuInTitle ? 0 : nextY, w, mbd.height);
        root.getJMenuBar().setOpaque(false);
        root.getJMenuBar().setBackground(transparentColor);
        if (!menuInTitle) {
            nextY += mbd.height;
        }
    }

    if (root.getContentPane() != null) {
        /* Dimension cpd = */ root.getContentPane().getPreferredSize();
        root.getContentPane().setBounds(0, nextY, w, h < nextY ? 0 : h - nextY);
    }
}
 
源代码16 项目: mzmine2   文件: MSMSLibrarySubmissionWindow.java
private void createSubmitParamPanel() {
  // Main panel which holds all the components in a grid
  pnSubmitParam = new GridBagPanel();
  pnSideMenu.add(pnSubmitParam, BorderLayout.NORTH);

  int rowCounter = 0;
  // Create labels and components for each parameter
  for (Parameter p : paramSubmit.getParameters()) {
    if (!(p instanceof UserParameter))
      continue;
    UserParameter up = (UserParameter) p;

    JComponent comp = up.createEditingComponent();
    comp.setToolTipText(up.getDescription());

    // Set the initial value
    Object value = up.getValue();
    if (value != null)
      up.setValueToComponent(comp, value);

    // By calling this we make sure the components will never be resized
    // smaller than their optimal size
    comp.setMinimumSize(comp.getPreferredSize());

    comp.setToolTipText(up.getDescription());


    // add separator
    if (p.getName().equals(LibrarySubmitParameters.LOCALFILE.getName())) {
      pnSubmitParam.addSeparator(0, rowCounter, 2);
      rowCounter++;
    }

    JLabel label = new JLabel(p.getName());
    pnSubmitParam.add(label, 0, rowCounter);
    label.setLabelFor(comp);

    parametersAndComponents.put(p.getName(), comp);

    JComboBox t = new JComboBox();
    int comboh = t.getPreferredSize().height;
    int comph = comp.getPreferredSize().height;


    int verticalWeight = comph > 2 * comboh ? 1 : 0;
    pnSubmitParam.add(comp, 1, rowCounter, 1, 1, 1, verticalWeight, GridBagConstraints.VERTICAL);
    rowCounter++;
  }
}
 
源代码17 项目: NBANDROID-V2   文件: SdksCustomizer.java
private void selectPlatform(Node pNode) {
    Component active = null;
    for (Component c : cards.getComponents()) {
        if (c.isVisible()
                && (c == jPanel1 || c == messageArea)) {
            active = c;
            break;
        }
    }
    final Dimension lastSize = active == null
            ? null
            : active.getSize();
    this.clientArea.removeAll();
    this.messageArea.removeAll();
    this.removeButton.setEnabled(false);
    if (pNode == null) {
        ((CardLayout) cards.getLayout()).last(cards);
        return;
    }
    JComponent target = messageArea;
    JComponent owner = messageArea;
    selectedPlatform = pNode.getLookup().lookup(AndroidSdk.class);
    if (pNode != getExplorerManager().getRootContext()) {
        if (selectedPlatform != null) {
            mkDefault.setEnabled(!selectedPlatform.isDefaultSdk());
            this.removeButton.setEnabled(!selectedPlatform.isDefaultSdk());
            if (!selectedPlatform.getInstallFolders().isEmpty()) {
                this.platformName.setText(pNode.getDisplayName());
                for (FileObject installFolder : selectedPlatform.getInstallFolders()) {
                    File file = FileUtil.toFile(installFolder);
                    if (file != null) {
                        this.platformHome.setText(file.getAbsolutePath());
                    }
                }
                target = clientArea;
                owner = jPanel1;
            }
        } else {
            removeButton.setEnabled(false);
            mkDefault.setEnabled(false);
        }
        Component component = null;
        if (pNode.hasCustomizer()) {
            component = pNode.getCustomizer();
        }
        if (component == null) {
            final PropertySheet sp = new PropertySheet();
            sp.setNodes(new Node[]{pNode});
            component = sp;
        }
        addComponent(target, component);
    }
    if (lastSize != null) {
        final Dimension newSize = owner.getPreferredSize();
        final Dimension updatedSize = new Dimension(
                Math.max(lastSize.width, newSize.width),
                Math.max(lastSize.height, newSize.height));
        if (!newSize.equals(updatedSize)) {
            owner.setPreferredSize(updatedSize);
        }
    }
    target.revalidate();
    CardLayout cl = (CardLayout) cards.getLayout();
    if (target == clientArea) {
        cl.first(cards);
    } else {
        cl.last(cards);
    }
}
 
源代码18 项目: seaglass   文件: SeaGlassRootPaneUI.java
/**
 * Returns the amount of space the layout would like to have.
 *
 * @param  parent the Container for which this layout manager is being
 *                used
 *
 * @return a Dimension object containing the layout's preferred size
 */
public Dimension preferredLayoutSize(Container parent) {
    Dimension cpd;
    Dimension mbd;
    Dimension tpd;
    int       cpWidth  = 0;
    int       cpHeight = 0;
    int       mbWidth  = 0;
    int       mbHeight = 0;
    int       tpWidth  = 0;
    int       tpHeight = 0;
    Insets    i        = parent.getInsets();
    JRootPane root     = (JRootPane) parent;

    if (root.getContentPane() != null) {
        cpd = root.getContentPane().getPreferredSize();
    } else {
        cpd = root.getSize();
    }

    if (cpd != null) {
        cpWidth  = cpd.width;
        cpHeight = cpd.height;
    }

    if (root.getJMenuBar() != null) {
        mbd = root.getJMenuBar().getPreferredSize();
        if (mbd != null) {
            mbWidth  = mbd.width;
            mbHeight = mbd.height;
        }
    }

    if (root.getWindowDecorationStyle() != JRootPane.NONE && (root.getUI() instanceof SeaGlassRootPaneUI)) {
        JComponent titlePane = ((SeaGlassRootPaneUI) root.getUI()).getTitlePane();

        if (titlePane != null) {
            tpd = titlePane.getPreferredSize();
            if (tpd != null) {
                tpWidth  = tpd.width;
                tpHeight = tpd.height;
            }
        }
    }

    return new Dimension(Math.max(Math.max(cpWidth, mbWidth), tpWidth) + i.left + i.right,
                         cpHeight + mbHeight + tpHeight + i.top + i.bottom);
}
 
源代码19 项目: beautyeye   文件: BERootPaneUI.java
/**
 * Returns the amount of space the layout would like to have.
 *
 * @param parent the parent
 * @return a Dimension object containing the layout's preferred size
 */ 
public Dimension preferredLayoutSize(Container parent) 
{
	Dimension cpd, mbd, tpd;
	int cpWidth = 0;
	int cpHeight = 0;
	int mbWidth = 0;
	int mbHeight = 0;
	int tpWidth = 0;
	int tpHeight = 0;
	Insets i = parent.getInsets();
	JRootPane root = (JRootPane) parent;

	if(root.getContentPane() != null) 
	{
		cpd = root.getContentPane().getPreferredSize();
	} 
	else 
	{
		cpd = root.getSize();
	}
	if (cpd != null) 
	{
		cpWidth = cpd.width;
		cpHeight = cpd.height;
	}

	if(root.getMenuBar() != null) 
	{
		mbd = root.getMenuBar().getPreferredSize();
		if (mbd != null)
		{
			mbWidth = mbd.width;
			mbHeight = mbd.height;
		}
	} 

	if (root.getWindowDecorationStyle() != JRootPane.NONE &&
			(root.getUI() instanceof BERootPaneUI)) 
	{
		JComponent titlePane = ((BERootPaneUI)root.getUI()).
		getTitlePane();
		if (titlePane != null) 
		{
			tpd = titlePane.getPreferredSize();
			if (tpd != null) 
			{
				tpWidth = tpd.width;
				tpHeight = tpd.height;
			}
		}
	}

	return new Dimension(Math.max(Math.max(cpWidth, mbWidth), tpWidth) + i.left + i.right, 
			cpHeight + mbHeight + tpWidth + i.top + i.bottom);
}
 
源代码20 项目: CQL   文件: JUtils.java
/**
 * Sets the maximum width of a JComponent to its preferred width, thereby
 * preventing it from being expanded. The component itself is returned, to allow
 * shortcuts such as: xyz.add(JUtils.fixWidth(component)).
 *
 * @param c the component to be width-fixed
 * @return the component
 */
public static JComponent fixWidth(JComponent c) {
	Dimension max = c.getMaximumSize();

	max.width = c.getPreferredSize().width;

	c.setMaximumSize(max);

	return c;
}