diff --git a/CHANGELOG.md b/CHANGELOG.md index fc7efe32..ac966eb5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,9 @@ FlatLaf Change Log since FlatLaf 1.3) - OptionPane: Fixed `OptionPane.sameSizeButtons`, which did not work as expected when setting to `false`. +- OptionPane: Fixed rendering of longer HTML text if it is passed as + `StringBuilder`, `StringBuffer`, or any other object that returns HTML text in + method `toString()`. (similar to issue #12) - TextField, FormattedTextField, PasswordField and ComboBox: Fixed alignment of placeholder text in right-to-left component orientation. diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatOptionPaneUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatOptionPaneUI.java index 2bb2c8f9..d0413691 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatOptionPaneUI.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatOptionPaneUI.java @@ -24,6 +24,7 @@ import java.awt.GridBagConstraints; import java.awt.Insets; import javax.swing.Box; import javax.swing.BoxLayout; +import javax.swing.Icon; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JPanel; @@ -162,8 +163,15 @@ public class FlatOptionPaneUI cons.insets.bottom = UIScale.scale( messagePadding ); // disable line wrapping for HTML - if( msg instanceof String && BasicHTML.isHTMLString( (String) msg ) ) - maxll = Integer.MAX_VALUE; + if( msg != null && + !(msg instanceof Component) && + !(msg instanceof Object[]) && + !(msg instanceof Icon) ) + { + msg = msg.toString(); + if( BasicHTML.isHTMLString( (String) msg ) ) + maxll = Integer.MAX_VALUE; + } // fix right-to-left alignment if super.addMessageComponents() breaks longer lines // into multiple labels and puts them into a box that aligns them to the left