Here you can find the source of cutString(String text, FontMetrics fontMetrics, int maxWidth)
Parameter | Description |
---|---|
text | original string |
fontMetrics | scrren font of text. |
maxWidth | maximum width of subchains in pixels. |
public static String[] cutString(String text, FontMetrics fontMetrics, int maxWidth)
//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); } }