// Create Font object with Font attribute (e.g. Font family, Font size, etc) for calculation java.awt.Font currFont = new java.awt.Font(fontName, 0, fontSize); AttributedString attrStr = new AttributedString(cellValue); attrStr.addAttribute(TextAttribute.FONT, currFont); // Use LineBreakMeasurer to count number of lines needed for the text FontRenderContext frc = new FontRenderContext(null, true, true); LineBreakMeasurer measurer = new LineBreakMeasurer(attrStr.getIterator(), frc); int nextPos = 0; int lineCnt = 0; while (measurer.getPosition() < cellValue.length()) { nextPos = measurer.nextOffset(mergedCellWidth); // mergedCellWidth is the max width of each line lineCnt++; measurer.setPosition(nextPos); } Row currRow = currSht.getRow(rowNum); currRow.setHeight((short)(currRow.getHeight() * lineCnt)); // The above solution doesn't handle the newline character, i.e. "\n", and only // tested under horizontal merged cells.
- labelHeight; int breakIndex = lineBreakMeasurer .nextOffset(maxFirstExtraLineWidth); - labelHeight; int breakIndex = lineBreakMeasurer .nextOffset(maxFirstExtraLineWidth);
int next = lineMeasurer.nextOffset(breakWidth);
int numLines = 0; while (measurer.getPosition() < val.length()) { pos = measurer.nextOffset(cellWidth); numLines++; measurer.setPosition(pos);
int numLines = 0; while (measurer.getPosition() < val.length()) { pos = measurer.nextOffset(cellWidth); numLines++; measurer.setPosition(pos);
int nextOffset; if(nextNewLineIndex != -1) { nextOffset = lineBreakMeasurer.nextOffset(contentWidth, offsetLimit, false); nextOffset = lineBreakMeasurer.nextOffset(contentWidth, Integer.MAX_VALUE, false);
int nextOffset; if(nextNewLineIndex != -1) { nextOffset = lineBreakMeasurer.nextOffset(contentWidth, offsetLimit, false); nextOffset = lineBreakMeasurer.nextOffset(contentWidth, Integer.MAX_VALUE, false);
int nextOffset; if(nextNewLineIndex != -1) { nextOffset = lineBreakMeasurer.nextOffset(contentWidth, offsetLimit, false); nextOffset = lineBreakMeasurer.nextOffset(contentWidth, Integer.MAX_VALUE, false);