JLabel
に改行を表示するにはどうすればよいですか?
たとえば、私が望んだ場合:
"こんにちは世界"
何とか何とか何とか
これは私が今持っているものです:
JLabel l = new JLabel("Hello World!\nblahblahblah", SwingConstants.CENTER);
これは表示されるものです:
Hello World!
これが馬鹿げた質問なら許してください、私はちょうどいくつかのSwingの基本を学んでいます...
文字列を<html></html>
で囲み、<br/>
で行を区切ります。
JLabel l = new JLabel("<html>Hello World!<br/>blahblahblah</html>", SwingConstants.CENTER);
これを試すことができます:
myLabel.setText("<html>" + myString.replaceAll("<","<").replaceAll(">", ">").replaceAll("\n", "<br/>") + "</html>")
これを行う利点は次のとおりです。
<br/>
に置き換えます。<
と>
をそれぞれ<
と>
で自動的に置き換え、レンダリングの混乱を防ぎます。それは何ですか:
"<html>" +
は最初にhtml
タグを追加します.replaceAll("<", "<").replaceAll(">", ">")
は、便宜上<
および>
をエスケープします.replaceAll("\n", "<br/>")
はすべての改行をbr
(HTML改行)タグで置き換えます+ "</html>"
は最後にhtml
タグを閉じます。追伸:このような古い投稿を目覚めさせて大変申し訳ありませんが、Javaの信頼できるスニペットがあります!
できるよ
JLabel l = new JLabel("<html><p>Hello World! blah blah blah</p></html>", SwingConstants.CENTER);
必要に応じて自動的にラップします。
Jide Open Source ComponentsでMultilineLabelコンポーネントを使用できます。
JIDE MultilineLabelを推奨してくれたAakashに感謝します。 JIDEのStyledLabelも最近強化され、複数行をサポートしています。他の多くの優れた機能があるため、MultilineLabelよりもお勧めします。以下のStyledLabelの記事をご覧ください。まだ無料でオープンソースです。
JLabelは実際には初歩的なHTMLを表示することができるため、改行文字(たとえばSystem.outとは異なります)の使用に応答しません。
対応するHTMLを挿入して<BR>
を使用すると、改行を取得できます。