Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 计算JComponent不同子类所需的显示空间_Java_User Interface_Swing - Fatal编程技术网

Java 计算JComponent不同子类所需的显示空间

Java 计算JComponent不同子类所需的显示空间,java,user-interface,swing,Java,User Interface,Swing,对于我当前的项目,我正在编写一个基于JTable的GUI。主要功能之一是能够根据内容(随时间变化)在运行时调整所有单元格的大小。当前,当应用程序启动时,所有单元格的高度和宽度都相同。我想用一种更复杂的方法来改变这一点。我想知道是否有可能确定正确显示“内容”所需的空间。这是没有太多的空间或削减的东西 “内容”是一个字符串。它是从数据库加载的,我不能对它做任何假设。它可能是空的。在这种情况下,对应单元格应该有任何类型的默认大小 从长远来看,将会有各种各样的内容显示出来,比如图片、视频等等 我尝试使用

对于我当前的项目,我正在编写一个基于JTable的GUI。主要功能之一是能够根据内容(随时间变化)在运行时调整所有单元格的大小。当前,当应用程序启动时,所有单元格的高度和宽度都相同。我想用一种更复杂的方法来改变这一点。我想知道是否有可能确定正确显示“内容”所需的空间。这是没有太多的空间或削减的东西

“内容”是一个字符串。它是从数据库加载的,我不能对它做任何假设。它可能是空的。在这种情况下,对应单元格应该有任何类型的默认大小

从长远来看,将会有各种各样的内容显示出来,比如图片、视频等等

我尝试使用FontMetrics计算字符串的长度。但是由于我使用JTextPanes来显示它们,所以我无法让它准确地工作。我认为这与JTextPanes自动换行有关,因为有时候行没有填满。这打乱了我的计算

长话短说:我需要一些设计指南来实现上面描述的功能。我相信你们中的一个聪明人知道怎么做

提前感谢,,
DeKay要设置JTable中的行高度,请查看:

要设置列宽,必须查看TableCOlumn API:


希望这有助于设置JTable中的行高度,请参见:

要设置列宽,必须查看TableCOlumn API:


希望这能对您有所帮助

因为您正在使用
JTextPane
进行渲染,您可能会发现这很有帮助

转换
textPane.modelToView()
总是显示为
null

请注意,“返回:坐标为矩形…如果组件的大小尚未为正,则返回null。”

我仍然不知道,一般来说,如何计算所需的空间量


IIUC,理解@camickr示例的关键是使用来包括文本窗格的更改边界,然后是“用于使容器重新布局其子组件。”

当您使用
JTextPane
进行渲染时,您可能会发现这很有帮助

转换
textPane.modelToView()
总是显示为
null

请注意,“返回:坐标为矩形…如果组件的大小尚未为正,则返回null。”

我仍然不知道,一般来说,如何计算所需的空间量


IIUC,理解@camickr示例的关键是使用来包括文本窗格的更改边界,然后是“用于使容器重新布局其子组件”

也许本文中的文本窗格大小计算将帮助您解决问题。

也许本文中的文本窗格大小计算将帮助您解决问题。

您的确切问题是什么,计算还是显示?您想要自定义什么,给定行的高度还是给定列的宽度?问题是所需空间的计算。我想自定义单元格的两个维度。用户应该能够单击单元格,并且该单元格应该变大。所有这些都已经实施。所以问题是,如何确定单元格的大小。单元格的大小只取决于单元格的字符串内容,对吗?目前,是的。它的工作原理如下:开始时,所有单元格都包含一个特定的字符串,从DB读取。然后,用户将单击一个单元格,该单元格被解释为对相应的数据集感兴趣。从DB收集更多详细信息。因此,需要显示更多的文本,这意味着单元格需要更多的显示空间,并且应该调整大小。我的程序的未来版本应该能够呈现不同类型的内容,而不仅仅是文本。所以必须记住这一点。你的确切问题是什么,计算还是显示?您想要自定义什么,给定行的高度还是给定列的宽度?问题是所需空间的计算。我想自定义单元格的两个维度。用户应该能够单击单元格,并且该单元格应该变大。所有这些都已经实施。所以问题是,如何确定单元格的大小。单元格的大小只取决于单元格的字符串内容,对吗?目前,是的。它的工作原理如下:开始时,所有单元格都包含一个特定的字符串,从DB读取。然后,用户将单击一个单元格,该单元格被解释为对相应的数据集感兴趣。从DB收集更多详细信息。因此,需要显示更多的文本,这意味着单元格需要更多的显示空间,并且应该调整大小。我的程序的未来版本应该能够呈现不同类型的内容,而不仅仅是文本。所以必须记住这一点。谢谢。我知道API。请看上面的评论,希望能澄清我的问题。谢谢。我知道API。请看一下上面的评论,希望能澄清我的问题。虽然这个例子很好用,但我无法让它在我的上下文中工作。转换textPane.modelToView(someInt)总是显示为null。除此之外,这种方法并不能解决我的全部问题。我仍然不知道,一般来说,如何计算所需的空间量,也就是说,对组件没有任何假设。如果能得到进一步的帮助,我们将不胜感激。@dekay5555:我已经详细阐述了上面的内容。虽然这个例子很好用,但我无法在我的上下文中使用它。转换textPane.modelToView(someInt)总是显示为null。除此之外,这种方法不能解决我的耳鼻喉科问题
public void setRowHeight(int row, int rowHeight)
public void setWidth(int width)