sirve que para example ejemplo java graphics text 2d

que - java 2d graphics



¿Completa justificación con un reemplazo de Java Graphics.drawString? (2)

¿Alguien sabe de un código existente que le permite dibujar texto completamente justificado en Java2D?

Por ejemplo, si dije, drawString("sample text here", x, y, width) , ¿hay una biblioteca existente que pueda determinar cuánto de ese texto se ajusta dentro del ancho, haga un espaciado entre caracteres para hacer el el texto se ve bien, y automáticamente hace el ajuste de palabras básico?


Aunque no es la solución más elegante ni robusta, aquí hay un método que tomará la Font del objeto Graphics actual y obtendrá FontMetrics para saber dónde dibujar el texto y, si es necesario, pasar a una nueva línea:

public void drawString(Graphics g, String s, int x, int y, int width) { // FontMetrics gives us information about the width, // height, etc. of the current Graphics object''s Font. FontMetrics fm = g.getFontMetrics(); int lineHeight = fm.getHeight(); int curX = x; int curY = y; String[] words = s.split(" "); for (String word : words) { // Find out thw width of the word. int wordWidth = fm.stringWidth(word + " "); // If text exceeds the width, then move to next line. if (curX + wordWidth >= x + width) { curY += lineHeight; curX = x; } g.drawString(word, curX, curY); // Move over to the right for next word. curX += wordWidth; } }

Esta implementación separará la String dada en una matriz de String utilizando el método de split con un carácter de espacio como el único separador de palabras, por lo que probablemente no sea muy robusto. También asume que la palabra es seguida por un carácter de espacio y actúa en consecuencia al mover la posición de la curX .

No recomendaría usar esta implementación si fuera usted, pero probablemente las funciones que se necesitan para realizar otra implementación seguirían usando los métodos proporcionados por la clase FontMetrics .