Here you can find the source of limitWithEllipsis(String str, Font font, int maxWidth, Component c)
public static String limitWithEllipsis(String str, Font font, int maxWidth, Component c)
//package com.java2s; /*/* ww w . jav a 2 s . co m*/ * Robonobo Common Utils * Copyright (C) 2008 Will Morton (macavity@well.com) & Ray Hilton (ray@wirestorm.net) * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ import java.awt.Component; import java.awt.Font; import java.awt.FontMetrics; public class Main { /** * If the string is longer than maxWidth, limit it to fit within maxWidth * with an ellipsis (...). Will always return at least the string "..." */ public static String limitWithEllipsis(String str, Font font, int maxWidth, Component c) { FontMetrics metrics = c.getFontMetrics(font); int strWidth = metrics.stringWidth(str); if (strWidth <= maxWidth) return str; for (int len = str.length() - 1; len > 0; len--) { String subStr = str.substring(0, len) + "..."; if (metrics.stringWidth(subStr) <= maxWidth) return subStr; } return "..."; } }