繁体   English   中英

如何将长字符串放入JLabel中

[英]How to fit a long String into a JLabel

正如标题所说:我需要将JLabel放入JFrame中,但JLabel中的文本太长,所以我需要添加一些换行符。 JLabel中的文本是从在线XML文件中获取的,因此我只能将文本更改为包含换行符。

此代码从XML文件中提取数据

Element element = (Element)nodes1.item(i);
            String vær = getElementValue(element,"body");
            String v = vær.replaceAll("<.*>", "" );  
            String forecast = "Vær: " + v;

在这种情况下,字符串我想在字符串v中添加一些换行符。字符串v包含来自xml文件的已解析数据。 返回String预测并将其设置为JLabel的文本。

只要问一下有什么东西未清除,提前谢谢!

我建议改用JTextArea并打开包装。 做到这一点的唯一方法JLabel是把换行<br />你的情况,这是行不通的(至少不容易),如果你不知道该文本事前。

JTextArea更灵活。 默认情况下,它看起来不同,但您可以摆弄一些显示属性,使其看起来像JLabel


一个简单的修改使用示例取自“ 如何使用文本区域”教程 -

public class JTextAreaDemo {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {         
                createAndShowGUI();
            }
        });
    }

    private static void createAndShowGUI(){
        final JFrame frame = new JFrame("JTextArea Demo");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        final JPanel panel = new JPanel();
        JTextArea textArea = new JTextArea(
                "If there is anything the nonconformist hates worse " +
                "than a conformist, it's another nonconformist who " +
                "doesn't conform to the prevailing standard of nonconformity.", 
                6, 
                20);
        textArea.setFont(new Font("Serif", Font.ITALIC, 16));
        textArea.setLineWrap(true);
        textArea.setWrapStyleWord(true);
        textArea.setOpaque(false);
        textArea.setEditable(false);

        panel.add(textArea);
        frame.add(panel);
        frame.pack();
        frame.setVisible(true);
    }
}

在此输入图像描述

JLabel能够显示HTML文本,即如果用<html>your text<html>包装文本,它可能能够包装文本。 虽然没有经过测试,所以YMMV。

您可以动态地告诉您的JLabel调整自身大小以适应文本。

如果您没有使用LayoutManager,请尝试:

        jLabel.setText ("A somewaht long message I would not want to
stop");
        jLabel.setSize(jLabel.getPreferredSize());

如果您使用的是布局管理器,则此代码段应该有效:

        jLabel.setText ("A somewaht long message I would not want to
stop");
        jLabel.validate();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM