Попытка:
if (!(typeof(callback)=='undefined')) {...}
Используйте HTML в setText, например,
myLabel.setText("<html><body>with<br>linebreak</body></html>");
По умолчанию Swing не переносит текст. Если вы укажете размер в JLabel, он закрасит только ту часть текста, которая подходит, а затем добавит «...» в конец.
Как было предложено, вы можете использовать HTML для включения переноса строк. Однако не так давно я создал настраиваемый делегат Swing UI, чтобы добиться этого и даже большего: MultiLineLabelUI .
Он будет переносить ваш текст, чтобы он соответствовал доступному пространству, а также учитывал жесткие разрывы строк. Если вы решите попробовать, это очень просто:
JLabel label = new JLabel("Text that'll wrap if necessary");
label.setUI(MultiLineLabelUI.labelUI);
Или, в качестве альтернативы, используйте пользовательский класс MultiLineLabel
, который в дополнение к переносу текста поддерживает вертикальное и горизонтальное выравнивание текста.
ОБНОВЛЕНИЕ
Я потерял домен с исходными образцами кода. Теперь его можно посмотреть на github: https: // github. com / sasjo / multiline
Вы можете поместить HTML внутри JLabel и использовать для этого тег разрыва строки.
А как насчет использования функции упаковки в JTextArea ?
String text = "some really long string that might need to"+
"be wrapped if the window is not wide enough";
JTextArea multi = new JTextArea(text);
multi.setWrapStyleWord(true);
multi.setLineWrap(true);
multi.setEditable(false);
JLabel single = new JLabel(text);
JPanel textpanel = new JPanel(new GridLayout(2,1));
textpanel.add(multi);
textpanel.add(single);
JFrame frame = new JFrame();
frame.add(textpanel);
frame.pack();
frame.setVisible(true);