Jlabel实现内容自动换行

摘自:https://blog.csdn.net/zhhtao89/article/details/50179695
 
2015年12月04日 21:09:27 阅读数:10454 标签: 函数javaswing 更多

个人分类: Java编程
 
版权声明:本文为博主原创文章,欢迎参考并提出意见。 https://blog.csdn.net/zhhtao89/article/details/50179695

在用java Swing写界面时,想实现JLabel中的文本内容自动换行,网上查了一下,大多是一些比较简单的加个
换行而已,于是自己写了一个函数,现在贴出了供大家学习。 
效果图如下: 

代码如下:

 package com.zht;

 import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.FontMetrics;
import java.util.concurrent.TimeUnit; import javax.swing.JFrame;
import javax.swing.JLabel; public class JLabelDemo extends JFrame { public static void main(String[] args)
throws InterruptedException {
System.out.println("hello");
JLabelDemo jLabelDemo = new JLabelDemo();
} public JLabelDemo() throws InterruptedException {
String text = "This space contains technical articles,"
+ " blogs and discussion forums with questions and answers."
+ "作为一个Java程序员,从论坛上感受到使用Java开发程序的人越来多,"
+ "心中不免欣慰。hello";
JLabel label = new JLabel();
label.setSize(200, 0);//注意JLabel一定要设置宽度
// System.out.println(label.getWidth());
JlabelSetText(label, text);
setLayout(new FlowLayout());
add(label);
pack();
// setSize(300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
} void JlabelSetText(JLabel jLabel, String longString)
throws InterruptedException {
StringBuilder builder = new StringBuilder("<html>");
char[] chars = longString.toCharArray();
FontMetrics fontMetrics = jLabel.getFontMetrics(jLabel.getFont());
int start = 0;
int len = 0;
while (start + len < longString.length()) {
while (true) {
len++;
if (start + len > longString.length())break;
if (fontMetrics.charsWidth(chars, start, len)
> jLabel.getWidth()) {
break;
}
}
builder.append(chars, start, len-1).append("<br/>");
start = start + len - 1;
len = 0;
}
builder.append(chars, start, longString.length()-start);
builder.append("</html>");
jLabel.setText(builder.toString());
}
}
 

Jlabel实现内容自动换行的更多相关文章

  1. 使pre的内容自动换行

    <pre> 元素可定义预格式化的文本.被包围在 pre 元素中的文本通常会保留空格和换行符.而文本也会呈现为等宽字体. <pre> 标签的一个常见应用就是用来表示计算机的源代码 ...

  2. [HTML Q&A][转]使pre的内容自动换行

    <pre> 元素可定义预格式化的文本.被包围在 pre 元素中的文本通常会保留空格和换行符.而文本也会呈现为等宽字体. <pre> 标签的一个常见应用就是用来表示计算机的源代码 ...

  3. 使pre的内容自动换行(转)

    <pre> 元素可定义预格式化的文本.被包围在 pre 元素中的文本通常会保留空格和换行符.而文本也会呈现为等宽字体. <pre> 标签的一个常见应用就是用来表示计算机的源代码 ...

  4. idea 未实现接口红线提示,重复代码波浪线提示,自动换行,控制台输出内容自动换行

    01,Could not autowire. No beans of 'UserMapper' type found 01.1,问题描述,通过反射动态实现的接口在调用时会出现以上提示,常见的如 ORM ...

  5. css控制英文内容自动换行問題

    css控制英文内容自动换行 HTML: <!-- 因为要显示的内容是用户通过CMS添加进入数据库,再抓取出来前台显示的,所以你根本无法 控制每一行内容的长度. 所以我在显示内容的div设置了一个 ...

  6. DatagridView内容自动换行和换行符换行

    内容自动换行: 在 DataGridView 新增 Row 时,設定 DataGridView 的 DefaultCellStyle 屬性WrapMode=true: 换行符换行: 在 DataGri ...

  7. DIV的内容自动换行

    word-break:break-all和word-wrap:break-word都是能使其容器如DIV的内容自动换行. 它们的区别就在于: 1,word-break:break-all 例如div宽 ...

  8. table表格td内内容自动换行

    项目开发时,遇到问题:td内传入数据,全是字母,不会自动换行 一般字母数字/特殊符号的话,会被浏览器默认是一个字符串或者说一个单词,不会自动换行 所以需要设置一下,让表格内容自动换行. 1.给td标签 ...

  9. 使pre的内容自动换行(转)小知识

    <pre> 元素可定义预格式化的文本.被包围在 pre 元素中的文本通常会保留空格和换行符.而文本也会呈现为等宽字体. <pre> 标签的一个常见应用就是用来表示计算机的源代码 ...

随机推荐

  1. Markdown编辑器推荐与语法教程--展示版

    ---恢复内容开始--- 前言 作为一名高级码农,怎能不知道Markdown的正确打开方式,Markdown现在可以说是无处不在,如果你还不知道简书中的代码块是怎么写出来的,小白无疑了.在此特别推荐一 ...

  2. php中 curl模拟post发送json并接收json(转)

    本地模拟请求服务器数据,请求数据格式为json,服务器返回数据也是json. 由于需求特殊性, 如同步客户端的批量数据至云端, 提交至服务器的数据可能是多维数组数据了.  这时需要将此数据以一定的数据 ...

  3. PHP MysqlI操作数据库(转)

    1连接数据库. Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter. ...

  4. IE9以上版本无法更換会员头像

    解决方法一:把网址加入"信任的網站" 就可以了 解决方法二:打开IE8的窗口-工具-- Intelnet选项-- 安全-- 自定义级别把“将文件上传到服务器时包含本地目录路径”这一 ...

  5. thinkphp的select和find的区别(转)

    做普通PHP项目转thinkphp时,字段自动完整匹配,ajax时前台数据一直取不到,后发现是select和find返回数据集有差异,参考下面方法修改. $this->ajaxReturn($m ...

  6. C语言通过地址传递参数

    // 正确 #include <stdio.h> struct para { int a; int b; }; struct para test = { .a = , .b = , }; ...

  7. unidac连接ORACLE免装客户端驱动

      当你选择Oracle作数据库服务器时,客户端一般需要装一个肥硕的200M左右客户端,而且还要做连接配置,尤其是C/S模式,客户端多的时候非常不便.当然,网上也有一个10M左右的Oracle精简客户 ...

  8. CAN总线优点

    废除传统的站地址编码,代之以对通信数据块进行编码,可以多主方式工作: 采用非破坏性仲裁技术,当两个节点同时向网络上传送数据时,优先级低的节点主动停止数据发送,而优先级高的节点可不受影响继续传输数据,有 ...

  9. php排序集合

    如果你已经使用了一段时间PHP的话,那么,你应该已经对它的数组比较熟悉了——这种数据结构允许你在单个变量中存储多个值,并且可以把它们作为一个集合进行操作. 经常,开发人员发现在PHP中使用这种数据结构 ...

  10. JavaScript笔记——DOM的操作

    节点及其类型 在JavaScript中,节点分为三种: 元素节点:HTML标签元素. 属性节点: 元素的属性, 可以直接通过属性的方式来操作. 文本节点: 是元素节点的子节点, 其内容为文本. 在什么 ...