在 JLabel 中打印句子

Posted

技术标签:

【中文标题】在 JLabel 中打印句子【英文标题】:Printing out sentences in JLabel 【发布时间】:2015-10-30 19:37:44 【问题描述】:

如何在 JLabel 中打印出新的句子或行,而不更改打印的最后一行?还是我必须使用其他组件?

【问题讨论】:

使用 setText(getText() + 当前文本) JTextArea 更适合多行文本。不过,您需要获取组件当前显示的内容(getText()),与新内容连接并设置要显示的值(setText())。 【参考方案1】:

您可以使用 getText() 检索 JLabel 中已存在的内容,然后使用 setText() 设置新值。

所以要在最后添加一些东西,你会这样做

label.setText(label.getText()+"换行");

【讨论】:

【参考方案2】:

您可以使用以下代码来获得所需的输出。

public class CreateJLabelWithBorder extends JFrame implements ActionListener 
JTextField textField;
JLabel label;

public CreateJLabelWithBorder() 
    this.getContentPane().setLayout(new FlowLayout());
    textField = new JTextField(20);
    add(textField);
    textField.addActionListener(this);
    label = new JLabel("Hello world");
    add(label);


@Override
public void actionPerformed(ActionEvent e) 
    if (!textField.getText().isEmpty()) 
        if (label.getText() != null) 
            String text = textField.getText() + "<br>" + label.getText();
            label.setText("<html> <body>" + text + "</body></html>" + "<br>");
            textField.setText("");
         else 
            String text = textField.getText();
            label.setText("<html> <body>" + text + "</body></html>" + "<br>");
            textField.setText("");
        
    



private static void createAndShowGUI() 
    JFrame frame = new CreateJLabelWithBorder();
    // frame.pack();
    frame.setSize(500, 700);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);



public static void main(String[] args) 

    javax.swing.SwingUtilities.invokeLater(new Runnable() 
        public void run() 
            createAndShowGUI();
        
    );

【讨论】:

以上是关于在 JLabel 中打印句子的主要内容,如果未能解决你的问题,请参考以下文章

如何在 JLabel 和 JTextField 上显示非科学格式的值?

怎么设置JLabel内容对齐方式

Jlabel颜色变化

JLabel自动将其自身集中在GridBagLayout中

如何将 JLabel 中的图标(拖放)移动到另一个 JLabel 而不是复制它?

如何在 JLabel 中设置填充