/** * Returns the preferred size to set a component at in order to render * an html string. You can specify the size of one dimension. * * @see <a href="http://blog.nobel-joergensen.com/2009/01/18/changing-preferred-size-of-a-html-jlabel/">reference for this implementation</a> */ private Dimension calculatePreferredSize(JLabel labelWithHtmlText, boolean width, int preferredSize) { View view = (View) labelWithHtmlText.getClientProperty(BasicHTML.propertyKey); view.setSize(width ? preferredSize : 0, width ? 0 : preferredSize); float w = view.getPreferredSpan(View.X_AXIS); float h = view.getPreferredSpan(View.Y_AXIS); return new Dimension((int) Math.ceil(w), (int) Math.ceil(h)); }
/** * Helper method for {@linkplain #getHtmlLabelTextExtent(java.lang.String, int, boolean)}. This * is required because we are creating and invisibly rendering a {@code JLabel} object in this * method, and being virtuous in our Swing usage we should only do that on the event dispatch * thread. * * @param labelText the text to render, optionally enclosed in {@code <html>...</html>} tags * @param fixedDimSize the size of the fixed dimension (either width or height * @param width {@code true} if the fixed dimension is width; {@code false} for height * @return the rendered label text extent */ private static Dimension doGetHtmlTextExtent( String labelText, int fixedDimSize, boolean width) { final JLabel label = new JLabel(); if (labelText.startsWith("<html>")) { label.setText(labelText); } else { label.setText("<html>" + labelText + "</html>"); } View view = (View) label.getClientProperty(javax.swing.plaf.basic.BasicHTML.propertyKey); view.setSize(width ? fixedDimSize : 0, width ? 0 : fixedDimSize); float w = view.getPreferredSpan(View.X_AXIS); float h = view.getPreferredSpan(View.Y_AXIS); return new java.awt.Dimension((int) Math.ceil(w), (int) Math.ceil(h)); } }
private void initialize() { if(initialWidth == NOT_INITIALIZED) { initialWidth = view.getPreferredSpan(X_AXIS); initialHeight = view.getPreferredSpan(Y_AXIS); setSize(initialWidth, initialHeight); } }
Renderer(JComponent c, ViewFactory f, View v) { super(null); host = c; factory = f; view = v; view.setParent(this); // initially layout to the preferred size setSize(view.getPreferredSpan(X_AXIS), view.getPreferredSpan(Y_AXIS)); }
Renderer(JComponent c, ViewFactory f, View v) { super(null); host = c; factory = f; view = v; view.setParent(this); // initially layout to the preferred size setSize(view.getPreferredSpan(X_AXIS), view.getPreferredSpan(Y_AXIS)); }
Renderer(JComponent c, ViewFactory f, View v) { super(null); host = c; factory = f; view = v; view.setParent(this); // initially layout to the preferred size setSize(view.getPreferredSpan(X_AXIS), view.getPreferredSpan(Y_AXIS)); }
@Override public float getPreferredSpan(int axis) { initialize(); if (axis == X_AXIS) { // width currently laid out to return width; } return view.getPreferredSpan(axis); }
Renderer(JComponent c, ViewFactory f, View v) { super(null); host = c; factory = f; view = v; view.setParent(this); // initially layout to the preferred size setSize(view.getPreferredSpan(X_AXIS), view.getPreferredSpan(Y_AXIS)); }
if (value.toString().startsWith("<html>")) { View view = (View) javax.swing.plaf.basic.BasicHTML.createHTMLView(label, value.toString()); width = (int) view.getPreferredSpan(View.X_AXIS); } else { width = (int) label.getFontMetrics(label.getFont()).stringWidth(value.toString()); }
JLabel labelBeingUsed = myLabel; View view = (View) labelBeingUsed.getClientProperty(BasicHTML.propertyKey); view.setSize(scrollPane1.getWidth(), 0.0f); float w = view.getPreferredSpan(View.X_AXIS); float h = view.getPreferredSpan(View.Y_AXIS); labelBeingUsed.setSize((int) w, (int) h);
JLabel labelBeingUsed = myLabel; View view = (View) labelBeingUsed.getClientProperty(BasicHTML.propertyKey); view.setSize(scrollPane1.getWidth(), 0.0f); float w = view.getPreferredSpan(View.X_AXIS); float h = view.getPreferredSpan(View.Y_AXIS); labelBeingUsed.setSize((int) w, (int) h);
@Override public Dimension getMinimumSize(JComponent c) { Dimension d = null; View v = (View) c.getClientProperty(BasicHTML.propertyKey); if (v != null) { d = getPreferredSize(c); d.width -= v.getPreferredSpan(View.X_AXIS) - v.getMinimumSpan(View.X_AXIS); } return d; }
public Dimension getMaximumSize(JComponent c) { Dimension d = null; View v = (View) c.getClientProperty(BasicHTML.propertyKey); if(v != null) { d = getPreferredSize(c); d.width += v.getMaximumSpan(View.X_AXIS) - v.getPreferredSpan(View.X_AXIS); } return d; }
@Override public Dimension getMaximumSize(JComponent c) { Dimension d = null; View v = (View) c.getClientProperty(BasicHTML.propertyKey); if (v != null) { d = getPreferredSize(c); d.width += v.getMaximumSpan(View.X_AXIS) - v.getPreferredSpan(View.X_AXIS); } return d; }
public Dimension getMinimumSize(JComponent c) { Dimension d = null; View v = (View) c.getClientProperty(BasicHTML.propertyKey); if(v != null) { d = getPreferredSize(c); d.width -= v.getPreferredSpan(View.X_AXIS) - v.getMinimumSpan(View.X_AXIS); } return d; }
@Override public Dimension getMaximumSize(JComponent c) { Dimension d = getPreferredSize(c); View v = (View) c.getClientProperty(BasicHTML.propertyKey); if (v != null) { d.width += v.getMaximumSpan(View.X_AXIS) - v.getPreferredSpan(View.X_AXIS); } return d; }
@Override public Dimension getMinimumSize(JComponent c) { Dimension d = null; View v = (View) c.getClientProperty(BasicHTML.propertyKey); if (v != null) { d = getPreferredSize(c); d.width -= v.getPreferredSpan(View.X_AXIS) - v.getMinimumSpan(View.X_AXIS); } return d; }
@Override public Dimension getMinimumSize(JComponent c) { Dimension d = null; View v = (View) c.getClientProperty(BasicHTML.propertyKey); if (v != null) { d = getPreferredSize(c); d.width -= v.getPreferredSpan(View.X_AXIS) - v.getMinimumSpan(View.X_AXIS); } return d; }
public Dimension getMinimumSize(JComponent c) { Dimension d = getPreferredSize(c); View v = (View) c.getClientProperty(BasicHTML.propertyKey); if (v != null) { d.width -= v.getPreferredSpan(View.X_AXIS) - v.getMinimumSpan(View.X_AXIS); } return d; }
public Dimension getMaximumSize(JComponent c) { Dimension d = getPreferredSize(c); View v = (View) c.getClientProperty(BasicHTML.propertyKey); if (v != null) { d.width += v.getMaximumSpan(View.X_AXIS) - v.getPreferredSpan(View.X_AXIS); } return d; }