Мне нужно иметь длинный описательный диалог в части моей программы, и он по-разному отображается в Mac и Windows. На Mac кажется, что слово обертывает текст и разбивает его на 3 или 4 строки, но на ПК он просто создает очень длинный диалог. Вот код, который показывает мои проблемы:
public class Test extends JFrame{
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class Test extends JFrame{
private String suggestion = "eee eee eeee eeee eeeerr rrrrr rrrrrrrr rrrrrr " +
"rrrrrr rrrrrrrrr rrrrrr rrrrr tttttt ttttttttttt ttttt tttttttttt ttt" +
" tttt tttttt ttttttttttt reroew uewurkpe jwrkl;ejr kejk ejrk;jewr;jeklr " +
"jk jre;wlj;ewjr;ej lejrlkejlkejlkjerl ejlrj kleklr jekl jlek " +
"rjklejrklejrklekl ";
public void showDialog()
{
JOptionPane.showMessageDialog(this,
suggestion,
"title",
JOptionPane.INFORMATION_MESSAGE,
null);
}
public static void main(String [] args)
{
Test test = new Test();
test.showDialog();
}
}
Когда я запускаю это в Windows, он просто создает одну огромную строку текста в длинном диалоге, но на Mac он создает несколько строк с диалогом правильного размера.
2 ответа
Компонент JOptionPane имеет свойство только для чтения (MaxCharactersPerLineCount) для максимального количества символов в строке. По умолчанию это Integer.MAX_VALUE. Создав подкласс JOptionPane, вы можете переопределить этот параметр. Изменение этого параметра позволяет компоненту переносить слова, когда сообщение действительно длинное.
http://java.sun.com/developer/JDCTechTips/2004/tt0122.html
Если вы предпочитаете управлять переносом слов самостоятельно, передайте массив строк в showMessageDialog. Каждая строка появится в отдельной строке. Это работает на любой платформе.
private String s1 = "eee eee eeee eeee eeeerr rrrrr rrrrrrrr rrrrrr";
private String s2 = "rrrrrr rrrrrrrrr rrrrrr rrrrr tttttt ttttttttttt ttttt tttttttttt ttt";
private String s3 = "tttt tttttt ttttttttttt reroew uewurkpe jwrkl;ejr kejk ejrk;jewr;jeklr";
private String s4 = "rjklejrklejrklekl";
private String s5 = "eee eee eeee eeee eeeerr rrrrr rrrrrrrr rrrrrr";
private String[] suggestion = new String[] {s1, s2, s3, s4, s5};
public void showDialog()
{
JOptionPane.showMessageDialog(this,
suggestion,
"title",
JOptionPane.INFORMATION_MESSAGE,
null);
}
Похожие вопросы
Новые вопросы
java
Java - это язык программирования высокого уровня. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег редко используется отдельно и чаще всего используется вместе с [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] и [maven].