drawString - Text rechtsbündig ausgeben

Hallo,

wie die Überschrift schon sagt, versuche ich per Graphics.drawString den ausgegebenen Text rechtsbündig zu schreiben. Standartmäßig gibt es ja linksbündig aus.

Unter C bzw. DirectX gibt es dafür eine Funktion, die die Länge des Strings in Pixeln ausgibt; sodass man das nur noch von der x-Koordinate abziehen muss.

Unter java habe ich noch keine Lösung dafür gefunden.

gruß
Frederic

Lösung
Ich habe grad per Mail folgende Antwort bekommen, mit der sich das Problem lösen lässt.

Ist evtl. auch für andere Interessant:


Hallo, ich kann in Forum noch nicht antworten deshalb hier die Antwort:

import java.awt.Font;
import java.awt.Graphics;
import java.awt.font.FontRenderContext;
import java.awt.geom.Rectangle2D;

import javax.swing.JComponent;
import javax.swing.JFrame;

public class MyComponent extends JComponent {
/**
*
*/
private static final long serialVersionUID = 1L;

@Override
protected void paintComponent(Graphics g) {
Font font = g.getFont();
FontRenderContext frc = g.getFontMetrics().getFontRenderContext();
Rectangle2D rect = font.getStringBounds(„Hallo“, frc);

g.drawString(„Hallo“, 0, (int) (rect.getHeight()));
// Hallo links oben

g.drawString(„Hallo“, (int) (this.getWidth() - rect.getWidth()),
(int) (rect.getHeight()));
// Hallo rechts oben

g.drawString(„Hallo“, 0, (int) (this.getHeight() - rect.getHeight()));
// Hallo links unten

g.drawString(„Hallo“, (int) (this.getWidth() - rect.getWidth()),
(int) (this.getHeight() - rect.getHeight()));
// Hallo rechts unten
}

/**
* @param args
*/
public static void main(String[] args) {
JFrame f = new JFrame();
f.add(new MyComponent());
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}

Am einfachsten geht das mit font.getStringBounds(String, FontRenderContext)
http://java.sun.com/javase/6/docs/api/java/awt/Font…

Aber auch mit der Klasse TextLayout (manchmal genauer)
http://java.sun.com/javase/6/docs/api/java/awt/font/…

MfG
fugipoj22

Vielen Dank an fugipoj22 an dieser Stelle :smile:

gruß
Frederic

stringwidth minus rechter rand owT
… hätte zu diesem Behuf den string dort angelegt.
(weiß’leider die genauen Bezeichnungen nicht, müßte ich mir 'raussuchen aus der api)