zoukankan      html  css  js  c++  java
  • Jlabel实现内容自动换行

    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中的文本内容自动换行,网上查了一下,大多是一些比较简单的加个
    换行而已,于是自己写了一个函数,现在贴出了供大家学习。 
    效果图如下: 
    这里写图片描述

    代码如下:

     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("<html>");
    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("<br/>");
    55             start = start + len - 1;
    56             len = 0;
    57         }
    58         builder.append(chars, start, longString.length()-start);
    59         builder.append("</html>");
    60         jLabel.setText(builder.toString());
    61     }
    62 }
     
  • 相关阅读:
    个推微服务网关架构实践
    NB-IoT 的“前世今生”
    个推基于Consul的配置管理
    个推Node.js 微服务实践:基于容器的一站式命令行工具链
    个推用户画像的实践与应用
    TensorFlow分布式实践
    个数是如何用大数据做行为预测的?
    QCon技术干货:个推基于Docker和Kubernetes的微服务实践
    基于CMS的组件复用实践
    数据可视化:浅谈热力图如何在前端实现
  • 原文地址:https://www.cnblogs.com/LiuYanYGZ/p/9545065.html
Copyright © 2011-2022 走看看