Я написал много проектов, используя JOptionPane
, и почти каждый раз, когда меня расстраивает тот факт, что я не могу обернуть текст внутри них.JOptionPane с переносом текста с использованием пользовательского компонента Swing
Я знаю, что JOptionPane
поддерживает HTML, но это всегда кажется недостаточным для выполнения того, что я хочу. Во-первых, JOptionPane
не полностью поддерживает HTML - свойство max-width
было бы замечательно иметь, например. С другой стороны, ни <br />
, ни теги <p>
не обеспечивают функциональность, на которой я на самом деле - JOptionPane, которая небольшая, когда сообщение мало, и может расти, когда сообщение больше, но которое не становится слишком большим, и, в конце концов, новая линия.
Это подводит меня к моему вопросу. Есть ли способ написать собственный пользовательский компонент, возможно, наследующий от JFrame
или что-то подобное, что позволит мне смоделировать эффекты JOptionPane
, но который обеспечивает более тонкое управление отображаемым текстом? Это должно включать, как минимум, функциональные возможности для управления максимальной шириной и обертыванием текста.
Я не нашел ответа на этот вопрос путем поиска других вопросов (возможно, ответ был заглушен всеми ответами, говорящими «используйте HTML»). Это не дубликат этих вопросов.
Спасибо за ответ, но это не решает мою проблему. Я хочу, чтобы компонент был многоразовым и надежным, и в целом может обрабатывать любые типы ввода, которые я передаю ему. Я хочу иметь возможность передать его «Привет» или весь абзац, и он все равно будет отображаться чисто. Я НЕ хочу форматировать каждый текст, который я передаю ему вручную, вставляя кучу разрывов строк. На самом деле, все дело в том, чтобы не делать что-то подобное. Там должен быть компонент, который делает это для нас. – nhouser9
@ nhouser9 Если бы у меня был доллар за каждый раз, когда я слышал, что кто-то сказал это. Swing API очень гибкий, вы были бы удивлены тем, что может принести немного усилий. Например, знаете ли вы, что параметр 'message' для' JOptionPane' является 'Object', и если вы передаете ему объект на основе компонента, он просто« добавлен »в' JOptionPane'. Подумайте об этом на несколько мгновений – MadProgrammer