From b9613fa72d901b183992c47ac16dac5081542485 Mon Sep 17 00:00:00 2001 From: Branislav Stojkovic Date: Sun, 6 Jan 2019 14:16:03 +0100 Subject: [PATCH] add support for multi-line text drawing --- .../src/org/diylc/components/AbstractComponent.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/diylc/diylc-core/src/org/diylc/components/AbstractComponent.java b/diylc/diylc-core/src/org/diylc/components/AbstractComponent.java index 08fa9467..a370826b 100644 --- a/diylc/diylc-core/src/org/diylc/components/AbstractComponent.java +++ b/diylc/diylc-core/src/org/diylc/components/AbstractComponent.java @@ -148,7 +148,16 @@ public abstract class AbstractComponent implements IDIYComponent { } protected void drawCenteredText(Graphics2D g2d, String text, int x, int y, HorizontalAlignment horizontalAlignment, - VerticalAlignment verticalAlignment) { + VerticalAlignment verticalAlignment) { + String[] parts = text.split("\n"); + if (parts.length > 1) { + FontMetrics fontMetrics = g2d.getFontMetrics(); + Rectangle stringBounds = fontMetrics.getStringBounds(parts[0], g2d).getBounds(); + for (int i = 0; i < parts.length; i++) + drawCenteredText(g2d, parts[i], x, (int)(y - stringBounds.height * (parts.length - 1) / 2d + i * stringBounds.height), horizontalAlignment, verticalAlignment); + return; + } + FontMetrics fontMetrics = g2d.getFontMetrics(); Rectangle stringBounds = fontMetrics.getStringBounds(text, g2d).getBounds();