版权声明:转载时请务必保留以下作者信息和链接
作者:陈维(chenweionline@hotmail.com)作者的网站:http://www.chenwei.mobi
我在使用 JOptionPane 时经常因为文本字符串太长于是 JOptionPane 宽度变的很大,甚至超过了屏幕范围。这个时候就就会感叹如果有宽屏显示器多好啊:)不过没有宽屏也没关系,我们可以从程序根本上解决问题。刚刚写了一个函数用来控制文本在程序界面上显示时按照指定宽度折行。
/** */
/**
* 将字符串按照指定宽度添加折行标记.
*
* @param text 需要折行的文本字符串.
* @param width 每行的宽度.
* @param fm 当前文本绘制时的FontMetrics对象.
* @return 折行后的文本字符串.
*/
public static String wrapText(String text, int width, FontMetrics fm) ... {
if(text != null && width > 0 && fm != null)...{
String result = "";
int maxWidth = fm.stringWidth(text);
if(maxWidth > width)...{
String tmpString = "";
int tmpLength = 0;
for(int i = 0; i < text.length(); i++)...{
tmpString = text.substring(i,i+1);
result += tmpString;
tmpLength += fm.stringWidth(tmpString);
if(tmpLength >= width)...{
result += "/n";
tmpLength = 0;
}
}
}else...{
result = text;
}
return result;
}else...{
return text;
}
}
* 将字符串按照指定宽度添加折行标记.
*
* @param text 需要折行的文本字符串.
* @param width 每行的宽度.
* @param fm 当前文本绘制时的FontMetrics对象.
* @return 折行后的文本字符串.
*/
public static String wrapText(String text, int width, FontMetrics fm) ... {
if(text != null && width > 0 && fm != null)...{
String result = "";
int maxWidth = fm.stringWidth(text);
if(maxWidth > width)...{
String tmpString = "";
int tmpLength = 0;
for(int i = 0; i < text.length(); i++)...{
tmpString = text.substring(i,i+1);
result += tmpString;
tmpLength += fm.stringWidth(tmpString);
if(tmpLength >= width)...{
result += "/n";
tmpLength = 0;
}
}
}else...{
result = text;
}
return result;
}else...{
return text;
}
}
折行效果图