2016-12-12 1 views
1

Wie kann ich den Text von JLabel ohne HTML-Tags abrufen?JAVA Wie kann man Textinhalt von einem benutzerdefinierten JLabel ohne HTML-Tags abrufen?

z.

CustomJLabel:

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

Main-Methode:

testCustomLbl = new CustomJLabel("Testing"); 
System.out.println(testCustomLbl.getText()); 

Ausgang I bekam:

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

gewünschte Ausgabe:

Testing 
+0

Bitte geben Sie den Code für getText() Methode –

+0

Es ist die Standardmethode getText(), die eine Zeichenfolge zurückgibt., – Ronaldo

Antwort

1

Es gibt drei Optionen:

  1. Sie Ihre Lieblings-HTML-Parser auswählen und HTML analysieren; Für etwas Inspiration siehe here. Dies ist bei weitem die robusteste und einfachste Lösung; aber natürlich: teuer.
  2. Wenn Ihnen der genaue HTML-Inhalt Ihrer Labels bekannt ist, können Sie reguläre Ausdrücke verwenden. oder andere Mittel zur String-Analyse. Das Problem ist: Wenn Sie diese Zeichenfolgen nicht kontrollieren, erhalten Sie Ihr eigenes benutzerdefiniertes "Parsen" hart. Weil jeder und jede Änderung irgendwo im HTML, das hineingeht ... Ihren kleinen Parser brechen könnte.
  3. Sie überarbeiten Ihr gesamtes Design: Wenn HTML-Text so ein Kernthema in Ihrer Anwendung ist, könnten Sie es in Ihrer Klasse wirklich "repräsentieren". Zum Beispiel, indem Sie eigene Versionen von JLabels erstellen, die eine HtmlString-Eingabe benötigen ... und sich einfach merken, welche Teile HTML sind und welche "reinen Texte".

Und hoppla; der Code, den Sie zeigen, sind bereits für die Option geeignet 3. Wenn Sie also, dass getText() kehrt möchten, dass ursprünglichen Text, Ihnen eine einfache

@Override 
public void String getText() { 
    return this.text; 
} 

zu Ihrer Custom Klasse hinzufügen könnte.

Edit: Alternativ können Sie auch einfach eine neue Methode wie

public void String getTextWithoutHtmlTags() 

oder etwas gleich hinzuzufügen; als überschreiben, dass geerbte Methode ändert irgendwie den "Vertrag" dieser Methode. Welche (je nach Kontext) in Ordnung sein könnte, oder nicht so ok.

+0

Diese Antwort macht den Job. Vielen dank für Deine Hilfe! :) – Ronaldo

Verwandte Themen