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

如何创建一个具有指定宽度且显示所有文本所需的最小可能高度的JTextArea?

司寇祖鹤
2023-03-14
问题内容

在所有可以找到使用a的示例中,JTextArea在构造the之前已知高度和宽度JTextArea,如果JTextArea需要更高的高度,则将其放在a内JScrollPane。显然,的高度JTextArea取决于宽度和文本内容。

现在,我的情况要求我不要使用JScrollPane,而是JTextArea要使其高到足以显示所有文本。创建时JTextArea,我知道文本内容以及将要使用的宽度。我不知道高度-
我希望高度尽可能小而不切断任何文本。这似乎很难实现。

附带说明,JTextArea将会添加JPanel没有布局管理器的,它会根据所添加组件的首选大小使用绝对定位。这要求my
JTextArea将在上返回正确的尺寸getPreferredSize()。正确的尺寸应该是构造时提供的宽度,以及显示具有所提供宽度的所有文本所需的最小高度。

我找到了一些类似的线程来讨论与之相关的异常/错误,这些线程JTextArea有时可以通过pack()在父容器上调用两次来解决。这不是我的选择。我很想基本上创建自己JTextArea的宽度和String并根据宽度和字体设置计算必要的最小高度,但是我想我会先问一下,然后再花时间来做。

希望我的问题很清楚。感谢大家的帮助!


问题答案:

它根据添加的组件的首选大小使用绝对定位。

听起来像是布局经理的工作。

这要求我的JTextArea将在getPreferredSize()上返回正确的尺寸。

JTextArea textArea = new JTextArea();
textArea.setLineWrap( true );
textArea.setWrapStyleWord( true );
textArea.setText("one two three four five six seven eight nine ten");
System.out.println("000: " + textArea.getPreferredSize());
textArea.setSize(100, 1);
System.out.println("100: " + textArea.getPreferredSize());
textArea.setSize( textArea.getPreferredSize() );


 类似资料:
  • 我正在用Java开发一个简单的2D游戏。 我正在使用JFrame类,但是我不认为宽度和高度是我指定的,或者图形不正确。 下面是我的一些代码片段: JFrame显示黑色背景。然而,根据我给fillRect函数的参数,框架底部仍然应该有一条10px高的白色长条。事实并非如此。白色的银条只有在从框架高度降低30像素后才真正开始显示。 谢谢你的帮助。

  • 问题内容: 抱歉,我一直在搜索此论坛,但没有确切答案。所以我问自己的。 我有一堂课,用目标纵向屏幕640x960显示glView和webview两种布局。我计划拆分布局。因此我的背景看起来是在(0,0,640,480)或纵向屏幕的一半处绘制的。,我想在(0,481,640,479)处绘制我的Web视图,该视图占据了从中间到底部的另一半。但是,我失败了,无法弄清楚如何实现我想要的布局。如何设置web

  • 问题内容: 如何获得具有特定列名的所有表的列表? 问题答案: 在每个数据库级别上都非常简单

  • 问题内容: 如果我设置任何元素,然后将,,, 不是该元素的影响? 是否有必要使用或或使用,,,该元素吗? 问题答案: 有关完整说明,请参见CSS规范中的“ 内联格式设置上下文”。 基本上可以在行内元素上设置边距,内边距和边框,但是它们的行为可能不符合您的预期。如果只有一行,则该行为可能会很好,但是同一流中的其他行可能会表现出与您期望的行为不同的行为(即,将不考虑填充)。此外,如果内嵌框包含易碎元素

  • 显示所有指定的元素。 使用展开运算符 (...) 和 Array.forEach() 来清除每个指定元素的 display 属性。 const show = (...el) => [...el].forEach(e => (e.style.display = '')); show(...document.querySelectorAll('img')); // Shows all <img> e

  • 问题内容: 我用过PIL 我需要为图像添加边框,并在图像的所有4个面上都设置宽度 问题答案: 这是您需要进行更改以使边框宽度为px数量的内容: 和不做盒子,而是分别为3点和1点。