JLabel的 - 显示较长的文字为多行?(JLabel - Show longer text as

2019-07-19 11:35发布

所以说我有,我希望在显示一个很长的线JLabel 。 我该怎么做?

目前,更长的线来充当这样的:

我不得不调整窗口看到完整的文本。

我怎样才能让这个有换行当文本几乎达到我的宽度JFrame

我不知道如果在这里需要任何代码为你回答这个问题,但仍:

我的框架属性:

frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(new Dimension(450, 400));
frame.setLocation(new Point(400, 300));
frame.setLayout(new BorderLayout());

标签我想修改:

question = new JLabel("Question:");
question.setFont(new Font("Serif", Font.BOLD, 15));
question.setHorizontalAlignment(JLabel.CENTER);

编辑:更多详细信息:

我读从一个文件行,然后显示它们。 行的大小是不固定的,所以我不知道在哪里把<br>的。

编辑2:

最后我用JTextArea

private JTextArea textAreaProperties(JTextArea textArea) {
    textArea.setEditable(false);  
    textArea.setCursor(null);  
    textArea.setOpaque(false);  
    textArea.setFocusable(false);
    textArea.setLineWrap(true);
    textArea.setWrapStyleWord(true);
    return textArea;
}

Answer 1:

只是另一个例子,可见,用正确的布局管理器,文本包裹在HTML标签会自动换到的可用空间...

public class TestHTMLLabel {

    public static void main(String[] args) {
        new TestHTMLLabel();
    }

    public TestHTMLLabel() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                StringBuilder sb = new StringBuilder(64);
                sb.append("<html>I have something to say, it's beter to burn out then to fade away.").
                                append("  This is a very long String to see if you can wrap with in").
                                append("the available space</html>");

                JLabel label = new JLabel(sb.toString());

                JFrame frame = new JFrame("Test");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(label);
                frame.setSize(100, 100);
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }    
        });
    }        
}


Answer 2:

使用HTML显示标签中的文本。

JLabel fancyLabel = new JLabel("<html>Punch Taskmaster</html>");

(工头提示的示例加入)



Answer 3:

格式HTML。 伟大的作品。

import javax.swing.*;
import java.awt.*;

public class Test {

    public static void main(String[] args) {
        final JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(new Dimension(450, 400));
        frame.setLocation(new Point(400, 300));
        frame.setLayout(new BorderLayout());

        final JLabel question = new JLabel("<html>Question:<br>What is love?<br>Baby don't hurt me<br>Don't hurt me<br>No more</html>");
        question.setFont(new Font("Serif", Font.BOLD, 15));
        question.setHorizontalAlignment(JLabel.CENTER);

        frame.add(question);

        frame.setVisible(true);
    }


}


Answer 4:

事情是这样的。 通过rcook给出的答案是非常正确的。 它只是例子来展示它是如何完成的。

 b1 = new JLabel("<html>Default Lable I have to resize the
                 <br/> window to see the complete text.</html>");


文章来源: JLabel - Show longer text as multiple lines?