当前位置: 首页 > 面试题库 >

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

潘兴朝
2023-03-14
问题内容

我正在尝试为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);
}}


 类似资料:
  • 问题内容: 我在查找有关此方面的特定信息和示例时遇到很多麻烦。我的应用程序中有许多jQuery UI对话框,这些对话框附加到已加载.ajax()调用的div上。它们都使用相同的设置调用: 我只想将对话框调整为要加载的内容的宽度。现在,宽度仅停留在300px(默认),我得到一个水平滚动条。 据我所知,“ autoResize”不再是对话框的选项,当我指定它时什么也没有发生。 我尝试不为每个对话框编写

  • 问题内容: 我是Java Swing的新手,对下一个代码感到困惑。 我的目标是制作带有 2个JTextPane的 垂直可滚动面板 。具有父面板固定宽度70%的第一个JTextPane和具有固定宽度30%的第二个JTextPane。因为这两个JTextPane具有固定的宽度,所以它们只能在垂直方向上扩展更多文本。 我使用此解决方案,因为我只想为此2个JTextPane使用一个滚动条。 我的初始化代码

  • 我是Java Swing的新手,我对下一个代码感到困惑。 null

  • 问题内容: 我有以下代码 div宽度为200px,因此border-bottom也是200px,但是如果我希望border-bottom- bottom仅100px而又不更改div宽度,该怎么办? 问题答案: 您可以使用伪元素。例如 无需出于演示目的使用额外的标记。IE8也支持:after。 编辑: 如果你需要一个右对齐边框,只是改变与 如果您需要居中对齐的边框,只需设置

  • C 11首先引入了对通过用户定义的文本在C中定义新文本的支持。C 11或更高版本是否也为

  • 对于像这样的固定宽度整数类型,是否有一些整数文字的c建议?