Java Code Examples for javax.swing.JLabel.getFontMetrics()

The following are Jave code examples for showing how to use getFontMetrics() of the javax.swing.JLabel class. You can vote up the examples you like. Your votes will be used in our system to get more good examples.
Example 1
Project: incubator-netbeans   File: QueryTableCellRenderer.java   Source Code and License Vote up 6 votes
private static String computeFitText(JLabel label) {
    String text = label.getText();
    if(text == null) text = "";
    if (text.length() <= VISIBLE_START_CHARS + 3) return text;
    
    Icon icon = label.getIcon();
    int iconWidth = icon != null ? icon.getIconWidth() : 0;
    
    FontMetrics fm = label.getFontMetrics(label.getFont());
    int width = label.getSize().width - iconWidth;

    String sufix = "...";                                                   // NOI18N
    int sufixLength = fm.stringWidth(sufix);
    int desired = width - sufixLength;
    if (desired <= 0) return text;

    for (int i = 0; i <= text.length() - 1; i++) {
        String prefix = text.substring(0, i);
        int swidth = fm.stringWidth(prefix);
        if (swidth >= desired) {
            return prefix.length() > 0 ? prefix + sufix: text;
        }
    }
    return text;
}
 
Example 2
Project: jdk8u-jdk   File: KerningLeak.java   Source Code and License Vote up 6 votes
private static void leak() {
    Map<TextAttribute, Object> textAttributes = new HashMap<>();
    textAttributes.put(TextAttribute.FAMILY, "Sans Serif");
    textAttributes.put(TextAttribute.SIZE, 12);
    textAttributes.put(TextAttribute.KERNING, TextAttribute.KERNING_ON);
    Font font = Font.getFont(textAttributes);
    JLabel label = new JLabel();
    int dummy = 0;
    for (int i = 0; i < 500; i++) {
        if (i % 10 == 0) System.out.println("Starting iter " + (i+1));
        for (int j = 0; j <1000; j++) {
            FontMetrics fm = label.getFontMetrics(font);
            dummy += SwingUtilities.computeStringWidth(fm, Integer.toString(j));
        }
    }
    System.out.println("done " + dummy);
}
 
Example 3
Project: openjdk-jdk10   File: KerningLeak.java   Source Code and License Vote up 6 votes
private static void leak() {
    Map<TextAttribute, Object> textAttributes = new HashMap<>();
    textAttributes.put(TextAttribute.FAMILY, "Sans Serif");
    textAttributes.put(TextAttribute.SIZE, 12);
    textAttributes.put(TextAttribute.KERNING, TextAttribute.KERNING_ON);
    Font font = Font.getFont(textAttributes);
    JLabel label = new JLabel();
    int dummy = 0;
    for (int i = 0; i < 500; i++) {
        if (i % 10 == 0) System.out.println("Starting iter " + (i+1));
        for (int j = 0; j <1000; j++) {
            FontMetrics fm = label.getFontMetrics(font);
            dummy += SwingUtilities.computeStringWidth(fm, Integer.toString(j));
        }
    }
    System.out.println("done " + dummy);
}
 
Example 4
Project: JDigitalSimulator   File: Guitilities.java   Source Code and License Vote up 5 votes
public static void setFittingLabelSize(JLabel label, int width) {
	int wordWidth, lines=1, size=0;
	if(width<=0||label.getText().isEmpty())
		return;
	StringTokenizer words = new StringTokenizer(label.getText());
	FontMetrics metrics = label.getFontMetrics(label.getFont());
	while(words.hasMoreTokens())
		if((size+=(wordWidth=metrics.stringWidth(words.nextToken())))>width) {
			size = wordWidth;
			lines++;
		}
	label.setPreferredSize(new Dimension(width, lines*metrics.getHeight()));
	label.revalidate();
}
 
Example 5
Project: powertext   File: RSyntaxTextArea.java   Source Code and License Vote up 4 votes
/**
 * Sets anti-aliasing to whatever the user's desktop value is.
 *
 * @see #getAntiAliasingEnabled()
 */
private void setDefaultAntiAliasingState() {

	// Most accurate technique, but not available on all OSes.
	aaHints = RSyntaxUtilities.getDesktopAntiAliasHints();
	if (aaHints==null) {

		Map<RenderingHints.Key, Object> temp =
				new HashMap<RenderingHints.Key, Object>();

		// In Java 6+, you can figure out what text AA hint Swing uses for
		// JComponents...
		JLabel label = new JLabel();
		FontMetrics fm = label.getFontMetrics(label.getFont());
		Object hint = null;
		//FontRenderContext frc = fm.getFontRenderContext();
		//hint = fm.getAntiAliasingHint();
		try {
			Method m = FontMetrics.class.getMethod("getFontRenderContext");
			FontRenderContext frc = (FontRenderContext)m.invoke(fm);
			m = FontRenderContext.class.getMethod("getAntiAliasingHint");
			hint = m.invoke(frc);
		} catch (RuntimeException re) {
			throw re; // FindBugs
		} catch (Exception e) {
			// Swallow, either Java 1.5, or running in an applet
		}

		// If not running Java 6+, default to AA enabled on Windows where
		// the software AA is pretty fast, and default (e.g. disabled) on
		// non-Windows.  Note that OS X always uses AA no matter what
		// rendering hints you give it, so this is a moot point there.
		//System.out.println("Rendering hint: " + hint);
		if (hint==null) {
			String os = System.getProperty("os.name").toLowerCase();
			if (os.contains("windows")) {
				hint = RenderingHints.VALUE_TEXT_ANTIALIAS_ON;
			}
			else {
				hint = RenderingHints.VALUE_TEXT_ANTIALIAS_DEFAULT;
			}
		}
		temp.put(RenderingHints.KEY_TEXT_ANTIALIASING, hint);

		aaHints = temp;

	}

	// We must be connected to a screen resource for our graphics
	// to be non-null.
	if (isDisplayable()) {
		refreshFontMetrics(getGraphics2D(getGraphics()));
	}
	repaint();

}