博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Jlabel实现内容自动换行
阅读量:5099 次
发布时间:2019-06-13

本文共 2530 字,大约阅读时间需要 8 分钟。

Jlabel实现内容自动换行

摘自:https://blog.csdn.net/zhhtao89/article/details/50179695
 
2015年12月04日 21:09:27  阅读数:10454 
标签:  更多
个人分类: 
 
版权声明:本文为博主原创文章,欢迎参考并提出意见。 https://blog.csdn.net/zhhtao89/article/details/50179695

在用java Swing写界面时,想实现JLabel中的文本内容自动换行,网上查了一下,大多是一些比较简单的加个

换行而已,于是自己写了一个函数,现在贴出了供大家学习。 
效果图如下: 
这里写图片描述

代码如下:

 
1 package com.zht; 2  3 import java.awt.BorderLayout; 4 import java.awt.Dimension; 5 import java.awt.FlowLayout; 6 import java.awt.FontMetrics; 7 import java.util.concurrent.TimeUnit; 8  9 import javax.swing.JFrame;10 import javax.swing.JLabel;11 12 public class JLabelDemo extends JFrame {13 14     public static void main(String[] args)15             throws InterruptedException {16         System.out.println("hello");17         JLabelDemo jLabelDemo = new JLabelDemo();18     }19 20     public JLabelDemo() throws InterruptedException {21         String text = "This space contains technical articles,"22                 + " blogs and discussion forums with questions and answers."23                 + "作为一个Java程序员,从论坛上感受到使用Java开发程序的人越来多,"24                 + "心中不免欣慰。hello";25         JLabel label = new JLabel();26         label.setSize(200, 0);//注意JLabel一定要设置宽度27 //      System.out.println(label.getWidth());28         JlabelSetText(label, text);29         setLayout(new FlowLayout());30         add(label);31         pack();32 //      setSize(300, 200);33         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);34         setLocationRelativeTo(null);35         setVisible(true);36     }37 38     void JlabelSetText(JLabel jLabel, String longString) 39             throws InterruptedException {40         StringBuilder builder = new StringBuilder("");41         char[] chars = longString.toCharArray();42         FontMetrics fontMetrics = jLabel.getFontMetrics(jLabel.getFont());43         int start = 0;44         int len = 0;45         while (start + len < longString.length()) {46             while (true) {47                 len++;48                 if (start + len > longString.length())break;49                 if (fontMetrics.charsWidth(chars, start, len) 50                         > jLabel.getWidth()) {51                     break;52                 }53             }54             builder.append(chars, start, len-1).append("
");55 start = start + len - 1;56 len = 0;57 }58 builder.append(chars, start, longString.length()-start);59 builder.append("");60 jLabel.setText(builder.toString());61 }62 }
 

 

 

转载于:https://www.cnblogs.com/LiuYanYGZ/p/9545065.html

你可能感兴趣的文章
ubuntu 16.04 u盘挂载以及卸载
查看>>
python 集合并集
查看>>
CSS样式书写顺序
查看>>
java解决跨域
查看>>
css scroll bug
查看>>
[编织消息框架][JAVA核心技术]动态代理应用8-IRpcReceive实现
查看>>
由一个经典布局问题引发的思考
查看>>
vue 字符串长度控制显示的字数超出显示省略号
查看>>
vim常用命令
查看>>
tensorboard 远程
查看>>
mysql常用操作(测试必备)
查看>>
修改tcp内核参数:somaxconn
查看>>
欧几里德算法(模板)
查看>>
oracle 11g 压缩数据文件
查看>>
opencv2411配置
查看>>
【洛谷P1061 Jam的计数法】搜索
查看>>
Android studio 安装apk时报错:INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries...
查看>>
20. 多态
查看>>
pip国内源
查看>>
docker 从本地拷贝文件
查看>>