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

mKorbel
  • 109,525
  • 20
  • 134
  • 319
Mevo Hafez
  • 161
  • 1
  • 5
  • 10
  • What's your question exactly? Multi-line text is not really suitable for being displayed into a table cell. – JB Nizet Jul 15 '12 at 07:14

1 Answers1

2

You'd have to be able to know the number of lines & the text height used by the jtable. From there you can set the row height (globally for the table, or for individual rows).

You would then need a table cell renderer capable of displaying multi line content.

Depending on your requirements, you'd might be better of displaying a one line summary of the cell & allow for tooltips to display the full content (depending on the size of te content) or a popup window with a none editable text component

UPDATE

Sorry for the short comment, I was on my IPad.

You have two choices, depending on what state your UI is in. You can grab a reference to the FontMatrics from the JTables graphics context. This will only work if the JTable has been realised (rendered on the screen)

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

This example, of course, assumes you are using the same font as the JTable. If not, you'll need to supply the correct font.

Or, if the UI hasn't been realised yet, you'll need to construct a compatible image a extract the font metrics from it. This is a little more complicated as it begins to deal with the graphics configuration and devices...

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();

Once you have the height of the font, you should be able to calculate the height of the text, assuming the text is broken up into lines (or you can split the lines your self). Now if that's not the case (or you want to provide you own word/line wrapping), this become increasingly complicated.

You can check here http://docs.oracle.com/javase/tutorial/2d/text/drawmulstring.html for how to render text using graphics2D for hints (you can use this to split text into groups as you need)

You might also want to check out http://www.jroller.com/santhosh/entry/multiline_in_table_cell_editing1 which shows a great idea for a multi line editor.

MadProgrammer
  • 343,457
  • 22
  • 230
  • 366