0

Using netbeans I was able to show the content of my database using Jtable, but the problem is that when I run the file I got the Jtable but not all of the content of the indivdual record appear entirely. Because some columns has a paragraph entry not a few words

4

1 回答 1

2

您必须能够知道 jtable 使用的行数和文本高度。从那里您可以设置行高(全局用于表或单个行)。

然后,您需要一个能够显示多行内容的表格单元格渲染器。

根据您的要求,您可能会更好地显示单元格的单行摘要并允许工具提示显示完整内容(取决于 te 内容的大小)或带有不可编辑文本组件的弹出窗口

更新

对不起,我的简短评论,我在我的 iPad 上。

您有两种选择,具体取决于您的 UI 所处的状态。您可以从 JTables 图形上下文中获取对 FontMatrics 的引用。这仅在 JTable 已实现(在屏幕上呈现)时才有效

FontMetrics fm = myTable.getFontMetrcis(myTable.getFont());
int height = fm.getHeight();

当然,此示例假定您使用与 JTable 相同的字体。如果没有,您需要提供正确的字体。

或者,如果 UI 尚未实现,您将需要构建兼容的图像并从中提取字体指标。这有点复杂,因为它开始处理图形配置和设备......

BufferedImage img = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration().createCompatibleImage(1, 1, Transparency.TRANSLUCENT);

Graphics2D g2d = img.createGraphics();
FontMetrics fm = g2d.getFontMetrics(font);
int height = fm.getHeight();
g2d.dispose();

一旦你有了字体的高度,你应该能够计算文本的高度,假设文本被分成几行(或者你可以自己拆分这些行)。现在,如果不是这种情况(或者您想提供自己的文字/换行),这将变得越来越复杂。

您可以在此处查看http://docs.oracle.com/javase/tutorial/2d/text/drawmulstring.html以了解如何使用 graphics2D 呈现文本以获取提示(您可以使用它根据需要将文本分成组)

您可能还想查看http://www.jroller.com/santhosh/entry/multiline_in_table_cell_editing1,它显示了多行编辑器的好主意。

于 2012-07-15T09:30:49.870 回答