jLabel auto中的信息加入了一个句子

时间:2013-01-24 08:50:53

标签: java swing jlabel

我尝试在java swing中为我的标签设置一些格式。如果用户输入:

    This
    is
    testing.

我将其存储到数据库中并检出。如何防止自动加入一个句子。例如,我希望在我的标签上显示可滚动的内容:

    This
    is
    testing.

而不是Thisistesting。我不知道这叫什么。这是换行方法吗?我添加了这个:jLabel_reply.setLineWrap(true);进入我的代码,但没有运气。句子仍然自动连接在一起。任何指南?提前谢谢。

2 个答案:

答案 0 :(得分:1)

JLabel默认情况下不会在多行显示。

这里有两个选项:

1)使用不可编辑的非透明JTextArea

2)在JLabel中使用HTML并将所有行分隔符替换为<br>

说明我的说法的基本例子:

import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;

public class TestMultipleLineLabel {

    private static final String TEXT = "This is\na text\non multiple lines";

    protected void initUI() {
        JFrame frame = new JFrame(TestMultipleLineLabel.class.getSimpleName());
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel panel = new JPanel(new GridBagLayout());
        GridBagConstraints gbc = new GridBagConstraints();
        gbc.gridwidth = GridBagConstraints.REMAINDER;

        JLabel label = new JLabel();
        label.setText(getHTMLText(TEXT));
        label.setFont(label.getFont().deriveFont(Font.PLAIN));
        panel.add(label, gbc);
        JTextArea textArea = new JTextArea();
        textArea.setEditable(false);
        textArea.setLineWrap(false);
        textArea.setOpaque(false);
        textArea.setWrapStyleWord(false);
        textArea.setText(TEXT);
        panel.add(textArea, gbc);
        frame.add(panel);
        frame.pack();
        frame.setVisible(true);
    }

    private String getHTMLText(String text) {
        return "<html>" + text.replace("\n", "<br>") + "</html>";
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                new TestMultipleLineLabel().initUI();
            }
        });
    }

}

答案 1 :(得分:0)

您的数据库引擎可能会修剪您的行分隔符。您应该使用支持\ n。

等特殊字符的字段类型