Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAVA如何在没有HTML标记的情况下从自定义JLabel检索文本内容?_Java_Html_Tags_Label_Jlabel - Fatal编程技术网

JAVA如何在没有HTML标记的情况下从自定义JLabel检索文本内容?

JAVA如何在没有HTML标记的情况下从自定义JLabel检索文本内容?,java,html,tags,label,jlabel,Java,Html,Tags,Label,Jlabel,如何在没有HTML标记的情况下从JLabel检索文本 例如 自定义标签: public CustomJLabel extends JLabel(){ private String text; public CustomJLabel(String text) { super("<html><div style='text-align: center;'>"+text+"</div></html>"),

如何在没有HTML标记的情况下从JLabel检索文本

例如

自定义标签:

public CustomJLabel extends JLabel(){
       private String text;
    public CustomJLabel(String text) {
        super("<html><div style='text-align: center;'>"+text+"</div></html>"),
        this.text=text;
    }
}
我得到的输出:

<html><div style='text-align: center;'>Testing</div></html>

有三种选择:

  • 你选择你最喜欢的HTML解析器并解析HTML;看看有没有灵感。这是迄今为止最稳健、最直接的解决方案;但当然:代价高昂
  • 如果您很清楚进入标签的确切HTML内容,那么您可以使用正则表达式;或其他字符串解析方法。问题是:如果您不控制这些字符串,那么您自己定制的“解析”就很难了。因为对HTML的每一处更改。。。可能会弄坏你的小解析器
  • 你重新设计了你的整个设计:如果HTML文本是你的应用程序中的核心内容,你可以考虑在你的类中真正地“表示”。例如,通过创建您自己的JLabel版本,该版本接受一些HtmlString输入。。。只需记住哪些部分是HTML,哪些部分是“纯文本” 哎呀,;您显示的代码已经适用于选项3。因此,如果希望
    getText()
    返回原始文本,可以添加一个简单的

    @Override
    public void String getText() {
      return this.text;
    }
    
    到您的CustomLabel类

    编辑:或者,您可以简单地添加一个新的方法,如

    public void String getTextWithoutHtmlTags()
    

    或者类似的东西;因为重写继承的方法会以某种方式更改该方法的“契约”。哪些(取决于上下文)可能是正常的,或者不是正常的。

    不需要复杂的代码或第三方JAR/库。
    下面是一个使用正则表达式的简单解决方案:

    String htmlStr = "<html><h1>Heading</h1> ...... </html>";
    String noHtmlStr = htmlStr.replaceAll("\\<.*?\\>", "");
    
    String htmlStr=“Heading……”;
    字符串noHtmlStr=htmlStr.replaceAll(“\\”,“”);
    
    这对我很有用。
    希望这能有所帮助。

    请提供getText()方法的代码。默认的getText()方法返回字符串。这些答案可以完成这项工作。非常感谢你的帮助!:)
    public void String getTextWithoutHtmlTags()
    
    String htmlStr = "<html><h1>Heading</h1> ...... </html>";
    String noHtmlStr = htmlStr.replaceAll("\\<.*?\\>", "");