2010-07-26 34 views
1

对于我当前的项目,我正在编写一个基于JTable的GUI。其中一个主要特点是能够在运行时调整所有单元的大小,具体取决于内容(随时间变化)。当前应用程序启动时,所有单元格的高度和宽度都相同。我想将其改为更复杂的方法。我想知道是否有可能确定“内容”所需的空间能够正确显示。这是没有太多的空间或切割的东西。计算JComponent的不同子类所需的显示空间

“内容”是初学者的字符串。它是从数据库加载的,我无法对此做任何假设。它可能为空。在这种情况下,相应单元应该有任何种类的默认大小。

从长远来看,将会显示所有不同类型的内容,如图片,视频等。

我试着用FontMetrics来计算字符串的长度。但是因为我使用JTextPanes来显示它们,所以我无法完全确定它的工作原理。我认为这与JTextPanes自动换行有关,因为有时这些行没有填满。这搞砸了我的计算。

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

由于提前, 德凯

+0

什么是你确切的问题,计算或显示?你想要自定义什么,给定行的高度或给定列的宽度? – 2010-07-26 08:39:38

+0

问题是计算所需的空间。我想定制单元格的两个尺寸。用户应该能够点击一个单元格,并且该单元格应该变大。所有这些已经实施。所以问题是,如何确定细胞应该如何“大”。 – user402026 2010-07-26 08:54:06

+0

而单元格的尺寸仅取决于单元格的字符串内容,是不是? – 2010-07-26 09:08:13

回答

-1

设置JTable中一个行的高度,看here

public void setRowHeight(int row, int rowHeight) 

要设置列宽,你不得不看的TableColumn API here

public void setWidth(int width) 

希望这可以帮助

+0

谢谢。我知道API。请看看上面的评论,希望能够澄清我的问题。 – user402026 2010-07-26 08:55:23

1

由于您使用JTextPane进行渲染,因此您可能会发现this Q&A有帮助。

转换textPane.modelToView()总是出来null

请注意,modelToView“返回:矩形的坐标...或者如果零件尚未具有正值,则返回null。”

我还没有想法,如何计算一般需要的空间量。

IIUC,理解的关键@ camickr的例子是使用的setPreferredSize()包括文本窗格的改变边界,其次是validate()其中“用于使容器再次布置其子组件。”

+0

谢谢,我会看看。 – user402026 2010-07-26 10:06:11

+0

虽然这个例子工作正常,但我无法让它在我的上下文中工作。转换textPane.modelToView(someInt)总是出来为空。 除此之外,这种方法并没有解决我的整个问题。我仍然不知道,如何计算一般需要的空间量,也就是说,没有任何有关组件的假设。 进一步的帮助将不胜感激。 – user402026 2010-07-27 09:22:29

+0

@ dekay5555:我已经详细阐述过了。 – trashgod 2010-07-27 15:48:28