Java FontMetrics cutString(String text, FontMetrics fontMetrics, int maxWidth)

Here you can find the source of cutString(String text, FontMetrics fontMetrics, int maxWidth)

Description

It returns an array of subchains of maximum length in pixels.

License

Apache License

Parameter

Parameter Description
text original string
fontMetrics scrren font of text.
maxWidth maximum width of subchains in pixels.

Return

array of subchains of maximum length in pixels.

Declaration

public static String[] cutString(String text, FontMetrics fontMetrics, int maxWidth) 

Method Source Code

//package com.java2s;
/**/*from  w  w  w. j av  a 2  s  .  co m*/
 * Copyright (C) 2012 Red Hat, Inc. and/or its affiliates.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *       http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import java.awt.*;

import java.util.*;

public class Main {
    /**
     * It returns an array of subchains of maximum length in pixels.
     *
     * @param text        original string
     * @param fontMetrics scrren font of text.
     * @param maxWidth    maximum width of subchains in pixels.
     * @return array of subchains of maximum length in pixels.
     */
    public static String[] cutString(String text, FontMetrics fontMetrics, int maxWidth) {
        Vector strings = new Vector(0, 10);
        text = text.trim();
        while (!text.trim().equals("")) {
            // Search for the position where I must cut the chain.
            int cutPos = text.length();
            while (fontMetrics.stringWidth(text.substring(0, cutPos)) > maxWidth)
                cutPos--;

            // Search for a space or a separator.
            int sepPos = cutPos - 1;
            boolean foundSep = false;
            if (cutPos != text.length())
                while (sepPos > 0 && !foundSep)
                    switch (text.charAt(sepPos)) {
                    case ' ':
                    case '.':
                    case ',':
                    case ';':
                    case ':':
                    case '?':
                        foundSep = true;
                        break;
                    default:
                        sepPos--;
                    }

            // If I did not find then the separator, cut the string in cutPos.
            if (!foundSep)
                sepPos = cutPos;
            else
                sepPos++;

            strings.addElement(text.substring(0, sepPos).trim());
            text = text.substring(sepPos, text.length()).trim();
        }

        String[] result = new String[strings.size()];
        for (int i = 0; i < result.length; i++)
            result[i] = (String) strings.elementAt(i);

        return result;
    }

    /**
     * @see #substring(String,int,int)
     * @deprecated Use substring instead
     */
    public static String subString(String str, int beginIndex, int endIndex) {
        return substring(str, beginIndex, endIndex);
    }

    public static String substring(String str, int beginIndex, int endIndex) {
        if (str.length() < endIndex) {
            endIndex = str.length();
        }

        return str.substring(beginIndex, endIndex);
    }
}

Related

  1. adjustFontSizeToGetPreferredWidthOfLabel(JLabel jLabel, int initialWidth)
  2. alignRight(FontMetrics fm, String string, int align)
  3. clipString(FontMetrics fm, String text, int availableWidth)
  4. clipString(FontMetrics metrics, int availableWidth, String fullText)
  5. clipString(Graphics g, String t, int width)
  6. fitString(String s, Graphics2D g2, Rectangle2D rect)
  7. getAllStylesSameWidthsFontsFamillyName()
  8. getCenterOffset(Graphics g, Font f, char ch)
  9. getComponentAverageCharacterWidth(Component component)