java
  • html
  • tags
  • label
  • jlabel
  • 2016-12-12 8 views 1 likes 
    1

    HTMLタギングなしでJLabelからテキストを取得するにはどうすればよいですか?JAVA HTMLタギングなしでカスタムJLabelからテキストコンテンツを取り出す方法は?

    などです。

    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; 
        } 
    } 
    

    主な方法:私が得た

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

    出力:

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

    所望の出力:

    Testing 
    
    +0

    getText()メソッドのコードを提供してください –

    +0

    これは、文字列を返すデフォルトのgetText()メソッドです。 – Ronaldo

    答えて

    1

    3つのオプションがあります。

    1. あなたがお好みのHTMLパーサーを選択し、HTMLを解析するには、一部のインスピレーションのためにhereを参照してください。これははるかに堅牢でストレートな解決策です。もちろん:コストがかかる。
    2. ラベルに含まれる正確なHTMLコンテンツを十分に理解している場合は、正規表現を使用できます。または文字列解析の他の手段。問題は、それらの文字列を制御しない場合、独自のカスタム "解析"を設定することは、というハードのです。入ってくるHTMLのどこかの変更があなたの小さなパーサを壊すかもしれないからです。
    3. デザイン全体を再加工します:HTMLテキストがアプリケーションの中核となる場合は、実際にクラス内のHTMLテキストを表現することを検討することができます。たとえば、いくつかのHtmlString入力を受け取る独自のバージョンのJLabelsを作成することによって、どの部分がHTMLであり、どの部分が「純粋なテキスト」であるかを単に思い出すことができます。

    とwhoops;あなたはgetText()戻り、元のテキストは、あなたがあなたのCustomLabelクラスに簡単な

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

    を追加することができることをことをしたい場合は、表示されているコードはまだオプション3に適しています。

    編集:代わりに、あなたは、単に似

    public void String getTextWithoutHtmlTags() 
    

    か何かのように新しいメソッドを追加することができます。 をオーバーライドとして継承したメソッドは、そのメソッドの「契約」を何らかの形で変更します。どちらが(状況に応じて)大丈夫か、そうではないかもしれません。

    +0

    これらの答えはジョブを行います。あなたの助けをありがとう! :) – Ronaldo

    関連する問題