JLabel – 将更长的文本显示为多行?

所以说我想要在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); 

编辑:更多细节:

我正在从文件中读取行,然后显示它们。 线条的大小不固定,所以我不知道放在哪里。

编辑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; } 

再举一个例子,显示使用正确的布局管理器,包含在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("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"); 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); } }); } } 

使用HTML在Label中显示文本。

 JLabel fancyLabel = new JLabel("Punch Taskmaster"); 

(添加了Taskmaster建议示例)

使用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("Question:
What is love?
Baby don't hurt me
Don't hurt me
No more"); question.setFont(new Font("Serif", Font.BOLD, 15)); question.setHorizontalAlignment(JLabel.CENTER); frame.add(question); frame.setVisible(true); } }

像这样的东西。 rcook给出的答案非常正确。 它只是展示如何完成它的例子。

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