2017-07-25 11 views
1

私はいくつかのHTML形式のテキストを含むJLabelを持っています。最終的に、私はJTable内の行を折り返しようとしています。しかし、私の問題はJLabelだけで簡単にすることができます。 HTMLの書式設定は、内にこのようになります:ブラウザのすべてでこれを実行するJLabel内のHTMLはブラウザで同じ結果を表示しません

<html> 
<body style='width: 250px;'> 
    <p style='word-wrap: break-word;'>some string</p> 
</body> 
</html> 

期待どおりに動作し、私はそれがしたいようにも長い1つの単語列と、それがラップします。私はそのようにJLabelの中でこれを置く場合:

import java.awt.BorderLayout; 
import java.awt.Dimension; 

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

public class HtmlInLabelExample extends JFrame { 

    private static final long serialVersionUID = 2194776387062775454L; 

    public HtmlInLabelExample() { 
     this.setTitle("HTML within a JLabel"); 
     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     this.setLayout(new BorderLayout()); 
     this.setSize(new Dimension(300, 100)); 
     this.setLocationRelativeTo(null); 

     String HTML_1 = "<html><body style='width: "; 
     String HTML_2 = "px;'><p style='word-wrap: break-word;'>"; 
     String HTML_3 = "</p></body></html>"; 

     String strWithSpaces = "This is a long String that should be wrapped and displayed on multiple lines. However, if this was only one really long word, that doesnt work."; 
     String strWithoutSpaces = "ThisisalongStringthatshouldbewrappedanddisplayedonmultiplelines.However,ifthiswasonlyonereallylongword,thatdoesntwork."; 
     JLabel lblHtml = new JLabel(); 

     lblHtml.setText(HTML_1 + String.valueOf(250) + HTML_2 + strWithoutSpaces + HTML_3); 

     this.add(lblHtml); 
     this.setVisible(true); 
    } 

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

      @Override 
      public void run() { 
       new HtmlInLabelExample(); 
      } 

     }); 
    } 

} 

ラッピング作品が、私は、スタイル= 'ワードラップを使用しwouldntのかのように、その間の言葉を破るdoesntの:ブレイクワード;.

誰かが、HTML形式がブラウザ(私が最も一般的なものを試しました)で異なった働きをする理由を教えてもらえますか?

答えて

2

は、誰かが私に説明してもらえます。..

Swingが唯一のサブセットをサポートしていますHTML 3.2 &非常に単純なスタイル。私はそれサポートword-wrap: break-word;それを回避する方法があり..if

をしなかった場合は驚かれると思いますか?

ブラウザを埋め込むスイングは1つではありませんが、Java-FX doesです。

+1

[WebView]は[例](https://stackoverflow.com/a/31576647/230513)用にSwingに埋め込むことができます。 – trashgod

0

JLabelはSwingコンポーネントなので、CSSのサポートは最新の標準やそれ以前の標準まではあまりよくないかもしれません。技術の世界は一種のスイングからの移動したHTML形式はブラウザで異なる動作をする理由...

関連する問題