Ausgeschnittener JFrame

sLy / Kevin

Grünschnabel
Hallo zusammen,

zuerst möchte ich euch bitten mir dumme bzw Leichtsinnsfehler zu verzeihen, da ich noch ein ziemlicher Java-Neuling bin :)

Ich habe die Tage beim surfen die mit jdk6u10 neu dazu gekommenen AWTUtilities entdeckt. Dazu folgende Frage:
Ist es möglich einen JFrame auf die Umrisse eines Textes zu reduzieren?
Folgender Code funktioniert einwandfrei und erzeugt den Frame in Elipsenform in der Mitte des Bildschirms:

Code:
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;

public class frame_intro extends JFrame {

    private static int screenWidth;
    private static int screenHeight;	

    public frame_intro() {

	Toolkit tk = Toolkit.getDefaultToolkit();
        Dimension screenSize = tk.getScreenSize();
        screenHeight = screenSize.height;
        screenWidth = screenSize.width;
        setSize(screenWidth / 2, screenHeight / 2);
        setLocation(screenWidth / 4, screenHeight / 4);
               
        setUndecorated(true);
   }

   public static void main (String[] args) {
        
        Window intro = new frame_intro();
		
        int w = 400;
	int h = 225;
	int x = screenWidth/4 - w/2;
	int y = screenHeight/4 - h/2;
	Shape shape = new Ellipse2D.Double(x,y,w,h);
        com.sun.awt.AWTUtilities.setWindowShape(intro, shape);

        intro.setVisible(true);
   }
}


Nun möchte ich

Code:
Shape shape = new Ellipse2D.Double(x,y,w,h);

durch das Shape eines Textes bzw des Umriss eines Textes ersetzen.

Ich habe dazu diesen Code gefunden:

Code:
Shape getTextShape(Graphics2D g2d, String str, Font font) {
        FontRenderContext frc = g2d.getFontRenderContext();
        TextLayout tl = new TextLayout(str, font, frc);
        return tl.getOutline(null);
    }


Allerdings kenne ich mich nicht wirklich mit Graphics2D aus. Muss ich dazu eine Paint-Methode schreiben und wenn ja, was muss diese enthalten? Oder gibt es einen komplett anderen (vielleicht sogar einfacheren) Weg ein Text in ein Shape zu konvertieren?

Danke im vorraus
MfG Kevin
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück