我正在使用JOptionPane.showMessageDialog
(以及showConfirmDialog
和其他方法)
此方法的问题 - 它不格式化文本。
如果我传递了很长的消息 - 它将在一行中显示(可能比屏幕分辨率更宽)。
当然我可以在消息中使用\n
,但对我来说这将是额外的工作。
我想要一个自动为我格式化文本的对话框。
答案 0 :(得分:6)
我想要一个自动为我格式化文本的对话框。
使用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);
}
});
}
}
但是如果string已经是多行(包含一个或多个\ n),它只格式化字符串的第一行。
将所有\n
替换为<br>
&amp; \n\n
与<p>
。
我输了“&lt;”和“&gt;”符号。如果string包含这样的符号 - 它们将不会显示在对话框中
<
&amp; >
,将它们翻译为HTML等价物<
&amp; >
。
答案 1 :(得分:2)
您只想在其中使用一个普通的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);