Consumer<Graphics2D> (float x, float y, int startColumn, int endColumn) { return g -> { g.setFont(myFont); int xAsInt = (int)x; int yAsInt = (int)y; if (x == xAsInt && y == yAsInt) { // avoid creating garbage if possible g.drawChars(myText, startColumn, endColumn - startColumn, xAsInt, yAsInt); } else { g.drawString(new String(myText, startColumn, endColumn - startColumn), x, y); } }; }