Jlabel实现内容自动换行

来源:互联网 发布:数字滚动抽奖软件 编辑:程序博客网 时间:2024/06/03 10:34

在用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());    }}
0 0
原创粉丝点击