JLabelの改行


107

どのようにして改行を表示できますJLabelか?

たとえば、私が欲しかった場合:

"こんにちは世界"
何とか何とか何とか

これは私が今持っているものです:

JLabel l = new JLabel("Hello World!\nblahblahblah", SwingConstants.CENTER);

これは表示されるものです:

こんにちは世界!

これがばかげた質問なら許してください。ただSwingの基本を学んでいます...


1
間違いなく馬鹿げた質問ではありません。htmlを理解するのに少し時間がかかったが、スイングでも可能でした。
Simon Baars 2017年

回答:


174

で文字列を囲み、で<html></html>行を区切り<br/>ます。

JLabel l = new JLabel("<html>Hello World!<br/>blahblahblah</html>", SwingConstants.CENTER);

3
ほんの少しの修正:単に<br>ではなく<br />を使用してください...これは(終了タグを逃さないために)推奨される方法です...ハッピーコーディング...
Nitin Bansal

6
@NitinBansal実際には、新しいバージョンのHTMLでは<br>のままにすることをお勧めします。これはvoidタグと呼ばれます。<br />は、下位互換性のために引き続き機能します。
gsingh2011 2012

@ gsingh2011:わかりました...それはもっといいです:-)
Nitin Bansal

3
JLabelがデフォルトで改行をサポートしない理由は何ですか?
ApproachingDarknessFish

2
実際には、htmlタグを閉じる必要さえありません。実行時にテキストを追加する必要がある場合は、これにより大幅に簡素化されます。
ロベルト

9

あなたはこれを試して行うことができます:

myLabel.setText("<html>" + myString.replaceAll("<","&lt;").replaceAll(">", "&gt;").replaceAll("\n", "<br/>") + "</html>")

これを行う利点は次のとおりです。

  • すべての改行を <br/>必ず。
  • これは、最終的な<、および>&lt;&gt;それぞれ自動的に置き換え、一部のレンダリングの混乱を防ぎます。

それは何ですか:

  • "<html>" +html先頭に開始タグを追加します
  • .replaceAll("<", "&lt;").replaceAll(">", "&gt;")エスケープ<>便宜のため
  • .replaceAll("\n", "<br/>")すべての改行brを、必要なものの(HTML 改行)タグに置き換えます
  • ...そして最後にタグを+ "</html>"閉じますhtml

PS:このような古い投稿を目覚めさせて申し訳ありませんが、Javaの信頼できるスニペットがあります。



2

できるよ

JLabel l = new JLabel("<html><p>Hello World! blah blah blah</p></html>", SwingConstants.CENTER);

必要に応じて自動的にラップされます。


2

JIDE MultilineLabelを推奨してくれたAakashに感謝します。JIDEのStyledLabelも複数行をサポートするように最近拡張されました。他にも多くの優れた機能があるため、MultilineLabelよりもお勧めします。以下のStyledLabelの記事をご覧ください。それはまだ無料でオープンソースです。

http://www.jidesoft.com/articles/StyledLabel.pdf


1

JLabelは実際には基本的なHTMLを表示できます。そのため、(たとえば、System.outとは異なり)改行文字の使用に応答しません。

対応するHTMLを入力してを使用<BR>すると、改行が表示されます。


ため息私は少なくとも6つの文字を追加している場合を除き、私はあなたのhtmlを逃れるためにバッククォートを追加しようとしました、しかし、それは私が編集することはできませんと言います。
AnnanFay 2011

1
@Annan HTMLでは必要ありません。あなたが話しているのは、XHTMLをサポートすることです。stackoverflow.com/questions/1946426/html-5-is-it-br-br-or-br
b1nary.atr0phy

@ b1naryatr0phy na、問題は修正されました:)元の投稿には、投稿<br>のリテラル改行としてスタックオーバーフローによってフォーマットされたリテラルタグがありました。
AnnanFay 2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.