调整对话框消息(JOptionPane)的大小以固定宽度的长句子

我正在尝试为JOptionPane带有超链接的长句子调整对话框()的高度。

我的代码是..

public class DialogTest {

public static void main(String[] args) throws Exception {

JTextPane jtp = new JTextPane();

Document doc = jtp.getDocument();

for (int i = 0; i < 50; i++) {

doc.insertString(doc.getLength(), " Hello Java World ", new SimpleAttributeSet());

if ((3 == i) || (7 == i) || (15 == i)) {

doc.insertString(doc.getLength(), " Hello Java World ", new SimpleAttributeSet());

SimpleAttributeSet attrs = new SimpleAttributeSet();

StyleConstants.setUnderline(attrs, true);

StyleConstants.setForeground(attrs, Color.BLUE);

String text = "www.google.com";

URL url = new URL("http://" + text);

attrs.addAttribute(HTML.Attribute.HREF, url.toString());

doc.insertString(doc.getLength(), text, attrs);

}

}

JScrollPane jsp = new JScrollPane(jtp);

jsp.setPreferredSize(new Dimension(480, 150));

jsp.setBorder(null);

JOptionPane.showMessageDialog(null, jsp, "Title", JOptionPane.INFORMATION_MESSAGE);

}}

如果我没有设置首选大小,那么该对话框将非常长,并且不可读。因此,我想将宽度固定为480。

而且,我要根据文字的长度调整高度。

如果运行此代码,则会看到垂直滚动条。但我不想显示该滚动条并调整对话框的高度。

回答:

为了固定宽度并调整高度,我亲自使用了这个技巧:您可以使用setSize固定任意高度和目标宽度,然后使用getPreferredSize()获得所需的高度:

jtp.setSize(new Dimension(480, 10));

jtp.setPreferredSize(new Dimension(480, jtp.getPreferredSize().height));

完整的代码是:

public class DialogTest {

public static void main(String[] args) throws Exception {

JTextPane jtp = new JTextPane();

Document doc = jtp.getDocument();

for (int i = 0; i < 50; i++) {

doc.insertString(doc.getLength(), " Hello Java World ", new SimpleAttributeSet());

if ((3 == i) || (7 == i) || (15 == i)) {

doc.insertString(doc.getLength(), " Hello Java World ", new SimpleAttributeSet());

SimpleAttributeSet attrs = new SimpleAttributeSet();

StyleConstants.setUnderline(attrs, true);

StyleConstants.setForeground(attrs, Color.BLUE);

String text = "www.google.com";

URL url = new URL("http://" + text);

attrs.addAttribute(HTML.Attribute.HREF, url.toString());

doc.insertString(doc.getLength(), text, attrs);

}

}

//JScrollPane jsp = new JScrollPane(jtp);

//jsp.setPreferredSize(new Dimension(480, 150));

//jsp.setBorder(null);

jtp.setSize(new Dimension(480, 10));

jtp.setPreferredSize(new Dimension(480, jtp.getPreferredSize().height));

//JOptionPane.showMessageDialog(null, jsp, "Title", JOptionPane.INFORMATION_MESSAGE);

JOptionPane.showMessageDialog(null, jtp, "Title", JOptionPane.INFORMATION_MESSAGE);

}}

以上是 调整对话框消息(JOptionPane)的大小以固定宽度的长句子 的全部内容, 来源链接: utcz.com/qa/423875.html

回到顶部