диалог сообщений с поддержкой авто-мультилинии? - PullRequest
2 голосов
/ 24 июня 2011

Я использую JOptionPane.showMessageDialogshowConfirmDialog и другие методы). Проблема с этим методом - он не форматирует текст.Если я передаю очень длинное сообщение - оно будет отображаться в одну строку (может быть даже шире, чем разрешение экрана).Конечно, я могу использовать \n в сообщениях, но для меня это будет дополнительной работой.

Мне нужен диалог, который автоматически форматирует для меня текст.

Ответы [ 2 ]

6 голосов
/ 24 июня 2011

Мне нужен диалог, который автоматически форматирует для меня текст.

Используйте HTML с CSS для ограничения ширины.

import java.awt.*;
import javax.swing.*;

public class LabelWidthTest {

    public static void main(String[] args) {
        SwingUtilities.invokeLater( new Runnable() {
            public void run() {
                String title = "<html><body style='width: 200px; padding: 5px;'>"
                    + "<h1>Do U C Me?</h1>"
                    + "Here is a long string that will wrap.  "
                    + "The effect we want is a multi-line label.";

                JLabel textLabel = new JLabel(title);
                JOptionPane.showMessageDialog(null, textLabel);

            }
        });
    }
}

Но если строка уже многострочная (содержит одну или несколько \ n), она форматирует только первую строку строки.

Заменить все \n на <br> & \n\n на <p>.

Я теряю символы "<" и ">".Если строка содержит такие символы - они не будут отображаться в диалоговом окне

Для < & >, переведите их в эквиваленты HTML, &lt; & &gt;.

2 голосов
/ 24 июня 2011

Вы хотите использовать просто старый JDialog с JTextArea внутри, что-то вроде:

JDialog editDialog = new JDialog();
JTextArea textArea = new JTextArea(myText);
textArea.setLineWrap(true);
textArea.setWrapStyleWord(true);
JScrollPane areaScrollPane = new JScrollPane(textArea);
editDialog.add(areaScrollPane);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...