つまり、JLabel
に表示したい非常に長い行があるとします。どうすればいいですか?
現在、より長い行が次のように表示されます。
完全なテキストを表示するには、ウィンドウのサイズを変更する必要があります。
テキストがJFrame
の幅にほぼ達したときに改行があるようにするには、どうすればよいですか?
これに答えるためにここでコードが必要かどうかはわかりませんが、それでも:
私のフレームプロパティ:
frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(new Dimension(450, 400));
frame.setLocation(new Point(400, 300));
frame.setLayout(new BorderLayout());
変更したいラベル:
question = new JLabel("Question:");
question.setFont(new Font("Serif", Font.BOLD, 15));
question.setHorizontalAlignment(JLabel.CENTER);
編集:詳細:
ファイルから行を読み取って表示しています。行のサイズが固定されていないため、<br>
をどこに配置するかわかりません。
編集2:
結局JTextArea
を使用しました。
private JTextArea textAreaProperties(JTextArea textArea) {
textArea.setEditable(false);
textArea.setCursor(null);
textArea.setOpaque(false);
textArea.setFocusable(false);
textArea.setLineWrap(true);
textArea.setWrapStyleWord(true);
return textArea;
}
ちょうど別の例で、適切なレイアウトマネージャーを使用すると、HTML
タグでラップされたテキストが自動的に使用可能なスペースにラップされることを示しています...
public class TestHTMLLabel {
public static void main(String[] args) {
new TestHTMLLabel();
}
public TestHTMLLabel() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
}
StringBuilder sb = new StringBuilder(64);
sb.append("<html>I have something to say, it's beter to burn out then to fade away.").
append(" This is a very long String to see if you can wrap with in").
append("the available space</html>");
JLabel label = new JLabel(sb.toString());
JFrame frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(label);
frame.setSize(100, 100);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
HTMLを使用して、ラベル内のテキストを表示します。
JLabel fancyLabel = new JLabel("<html>Punch Taskmaster</html>");
(タスクマスター-提案された例が追加されました)
HTMLでフォーマットします。よく働く。
import javax.swing.*;
import Java.awt.*;
public class Test {
public static void main(String[] args) {
final JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(new Dimension(450, 400));
frame.setLocation(new Point(400, 300));
frame.setLayout(new BorderLayout());
final JLabel question = new JLabel("<html>Question:<br>What is love?<br>Baby don't hurt me<br>Don't hurt me<br>No more</html>");
question.setFont(new Font("Serif", Font.BOLD, 15));
question.setHorizontalAlignment(JLabel.CENTER);
frame.add(question);
frame.setVisible(true);
}
}
このようなもの。 rcookによる答えは非常に正しいです。それがどのように行われるかを示すための単なる例です。
b1 = new JLabel("<html>Default Lable I have to resize the
<br/> window to see the complete text.</html>");