Java swing: многострочные метки? [дубликат]
Возможные Дубликаты:
многострочный текст в JLabel
Я хочу сделать это:
JLabel myLabel = new JLabel();
myLabel.setText("This isna multi-line string");
в настоящее время это выливается в метки
This isa multi-line string
Я хочу, чтобы он сделал это вместо этого:
This is
a multi-line string
какие предложения?
спасибо
EDIT: реализованное решение
в теле метода:
myLabel.setText(convertToMultiline("This isna multi-line string"));
помощник метод:
public static String convertToMultiline(String orig)
{
return "<html>" + orig.replaceAll("n", "<br>");
}
7 ответов
можно использовать HTML
на JLabels
. Чтобы использовать его, ваш текст должен начинаться с <html>
.
установите текст в "<html>This is<br>a multi-line string"
и это должно сработать.
посмотреть Свинг Учебник: JLabel и Многострочная метка (HTML) для получения дополнительной информации.
public class JMultilineLabel extends JTextArea{
private static final long serialVersionUID = 1L;
public JMultilineLabel(String text){
super(text);
setEditable(false);
setCursor(null);
setOpaque(false);
setFocusable(false);
setFont(UIManager.getFont("Label.font"));
setWrapStyleWord(true);
setLineWrap(true);
}
}
он полностью выглядит одинаково для меня, но его уродливый
еще один простой способ (но немного меняет стиль текста) - использовать <pre></pre>
html блок.
это сохранит любое форматирование, введенное пользователем, если строка, которую вы используете, пришла из поля ввода пользователя.
пример:
JLabel label = new JLabel("<html><pre>First Line\nSecond Line</pre></html>");
прямая процедура написания многострочного текста в jlabel:
JLabel label = new JLabel("<html>First Line<br>Second Line</html>");
проблема с использованием html в JLabel
или любой компонент Swing заключается в том, что вы должны стилизовать его как html, а не с обычным setFont
, setForeground
, etc. Если ты не против, хорошо.
в противном случае вы можете использовать что-то вроде MultilineLabel от JIDE, который простирается JTextArea
. Это часть их открытого исходного кода Commom Layer.
JLabel может принимать html-код. Возможно, вы можете попробовать использовать <br>
тег.
пример:
JLabel myLabel = new JLabel();
myLabel.setText("<html> This is a <br> multi-line string </html>");