getFontMetrics außerhalb von paint(Graphics g)

Status
Nicht offen für weitere Antworten.

javanewcomer

Mitglied
Hi!
Gibt es eine Möglichkeit getFontMetrics außerhalb von paint(Graphics g) aufzurufen?
So funktioniert es:
[HIGHLIGHT="Java"]import java.awt.*;

public class Test
extends Frame
{
public static void main(String[] args)
{
Test wnd = new Test();
}
public Test()
{
super("Test");
setSize(300,200);
setVisible(true);
}
public void paint(Graphics g)
{
Font font;
FontMetrics fm = getFontMetrics(new Font("Serif",Font.PLAIN,36));
System.out.println(fm.getAscent());
}
}[/HIGHLIGHT]
Aber so funktioniert es eben nicht:
[HIGHLIGHT="Java"]import java.awt.*;

public class Test
{
public static void main(String[] args)
{
Font font = new Font("Serif",Font.PLAIN,36);
FontMetrics fm = getFontMetrics(font);
System.out.println(fm.getAscent());
}
}[/HIGHLIGHT]
Im 2. Beispiel heißt es, dass die Methode undefiniert ist.

Aber wie komme ich ohne die paint-Methode aufrufen zu müssen an die Daten heran und vor allem weshalb ist die Methode undefiniert?

mfg
javanewcomer
 

Schandro

Top Contributor
Beispiel 1 ist in einem nicht-statischen Kontext
Beispiel 2 ist in einem statischen Kontext
Außerdem erbt deine Klasse von Frame

Nur Beispiel 1 kann getFontMetrics aufrufen, da getFontMetrics nicht-statisch ist

(Die Methode getFontMetrics ist in Component definiert worden, Container erbt es, Window erbt es aus Container, Frame erbt es aus Window und du erbst es aus Frame)
 

Wildcard

Top Contributor
Du kannst über das Toolkit gehen, ist aber deprecated und wenn die Rendering Hints nicht zum Graphics Context deiner Component passen sind die Ergebnisse natürlich falsch.
 

javanewcomer

Mitglied
Hi!
Okay danke erstmal!
Werde es nochmal über Toolkit versuchen.

Aber auch wenn ich das 2. Beispiel um "extends Frame" erweitere funktioniert es nicht, aber soweit ich Schandros Antwort verstanden habe, müsste es doch dann funktionieren oder habe ich etwas übersehen bzw. falsch verstanden?

mfg
javanewcomer
 
S

SlaterB

Gast
von den drei Sätzen
Beispiel 1 ist in einem nicht-statischen Kontext
Beispiel 2 ist in einem statischen Kontext
Außerdem erbt deine Klasse von Frame
hast du den dritten bedacht, die ersten beiden anscheinend ignoriert, oder nicht verstanden,
woraus eine Schlussfolgerung 'müsste es doch dann funktionieren' dann allerdings kühn wäre

1/3 Treffer, etwas knapp ;)
 
G

Gast2

Gast
nein ist immer noch in einem statischen Kontext "static main"...

Was ist eigentlich dein Ziel?

Gibt es eine Möglichkeit getFontMetrics außerhalb von paint(Graphics g) aufzurufen?

Ja du kannst die Zeilen wo du in paint hast genau so gut im Konstruktor aufrufen... ist ja nicht von paint abhängig...
 
Zuletzt bearbeitet von einem Moderator:

thE_29

Top Contributor
Oder du legst dir eine Kopie von deiner Component an und holst es via getFontMetrics zurück ;) (oder gleich direkt vom Objekt).
 

slawaweis

Bekanntes Mitglied
man kann die Metrics direkt von dem Font bekommen:

Code:
Font font = ...;
String text = "Text";

FontRenderContext frc = new FontRenderContext(null, true, false);

LineMetrics lm = font.getLineMetrics(text, frc);

Rectangle2D bound = font.getStringBounds(text, frc);

dazu sollte man sich aber vorher FontRenderContext ansehen, da kann man eine Menge Sachen setzen.

Slawa
 

javanewcomer

Mitglied
Hi!
Achso, ich hatte das mit dem statischen Kontext falsch verstanden! Die Methode, welche getFontMetrics aufruft darf also nicht statisch sein. Nun ist es angekommen;)

Hab es jetzt so gelöst und es erfüllt erstmal seinen Zweck. Falls doch nicht werde ich eure anderen Tips noch aufgreifen.

Danke an alle!!!

[HIGHLIGHT="Java"]import java.awt.*;

public class Test
{
public static void main(String[] args)
{
Ascent data = new Ascent();
data.printAscent();
}
}

class Ascent
extends Frame
{
public void printAscent()
{
Font font = new Font("Serif",Font.PLAIN,36);
FontMetrics fm = getFontMetrics(font);
System.out.println(fm.getAscent());
}
}[/HIGHLIGHT]

mfg
blut-lecker
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
conan2 getFontMetrics() außerhalb des Components AWT, Swing, JavaFX & SWT 7
C Alternative zu getFontMetrics um Stringlänge zu berechnen AWT, Swing, JavaFX & SWT 2
volcanos SpringLayout mit zusätzlichen Buttons außerhalb des SpringLayout AWT, Swing, JavaFX & SWT 33
CptK Fokus auf geöffnetes Zweit-Fenster setzen und Eingaben außerhalb blocken AWT, Swing, JavaFX & SWT 2
M JavaFX - Bild in Jar einbinden, sodass es auch außerhalb der IDE geladen wird. AWT, Swing, JavaFX & SWT 2
Q GUI außerhalb GUI-Thread updaten - GUI friert ein AWT, Swing, JavaFX & SWT 18
B Event Handling Mausbewegung auch außerhalb eines JFrames registrieren AWT, Swing, JavaFX & SWT 2
F Canvas Objekt außerhalb des Frames zeichnen AWT, Swing, JavaFX & SWT 3
N Swing außerhalb des Hauptframe Komponente/Frame öffnen AWT, Swing, JavaFX & SWT 2
E 2D-Grafik Zeichnen außerhalb der "paintComponent"-Methode? AWT, Swing, JavaFX & SWT 5
T MouseMotionListener außerhalb von Frame AWT, Swing, JavaFX & SWT 3
MrGe getWidth(); getHeight(); außerhalb von paintComponent AWT, Swing, JavaFX & SWT 4
thE_29 Swing JTabbedPane Focus von Komponenten außerhalb AWT, Swing, JavaFX & SWT 10
J JTextArea wird nicht aktualisiert bei Zugriff von außerhalb AWT, Swing, JavaFX & SWT 2
T Variable Menge an Bildern außerhalb paint() zeichnen? AWT, Swing, JavaFX & SWT 2
H JWindow schließen bei einem Klick außerhalb der Anwendung? AWT, Swing, JavaFX & SWT 19
T erkennen ob innerhalb oder außerhalb von canvas gezeichnet AWT, Swing, JavaFX & SWT 2
H 2D-Grafik Problem mit Paint AWT, Swing, JavaFX & SWT 1
frager2345 Warum paintComponent hier und nicht paint AWT, Swing, JavaFX & SWT 2
U Was ist der Unterschied von paint und paincomponent? AWT, Swing, JavaFX & SWT 3
L 2D-Grafik Swing paint|paintComponent AWT, Swing, JavaFX & SWT 2
krgewb 2D-Grafik paint-Methode wird zu oft ausgeführt AWT, Swing, JavaFX & SWT 5
S Zeichen ohne paint-Methode AWT, Swing, JavaFX & SWT 2
J Swing Wann brauche ich @Override vor der paint()-Methode? AWT, Swing, JavaFX & SWT 1
G Eine paint-Methode, 2 Welten? AWT, Swing, JavaFX & SWT 3
H Swing + Paint: Mehrere Objekte zeichnen lassen AWT, Swing, JavaFX & SWT 3
A paint-Methode aufrufen AWT, Swing, JavaFX & SWT 13
Xanny 2D-Grafik Beginner! Probleme mit Swing, Gprahics class und paint AWT, Swing, JavaFX & SWT 13
L Berechnungen in paint AWT, Swing, JavaFX & SWT 8
S Grafik: Programm kommt nicht zur paint()-Methode AWT, Swing, JavaFX & SWT 6
W Paint-Methode in anderer Klasse funktioniert nicht AWT, Swing, JavaFX & SWT 7
S 2 Paint-Methoden in einer Klasse ? AWT, Swing, JavaFX & SWT 2
J zwei Paint methoden in einer Klasse AWT, Swing, JavaFX & SWT 3
P Paint und paintComponent AWT, Swing, JavaFX & SWT 12
F 2D-Grafik Was ruft die Paint - Methode auf ? AWT, Swing, JavaFX & SWT 2
S JButton u. Label auf paint-Methode AWT, Swing, JavaFX & SWT 1
S 2 paint-Methoden in einer Klasse ? AWT, Swing, JavaFX & SWT 2
S Paint Methode ohne implements JPanel AWT, Swing, JavaFX & SWT 1
S Farbe ändern bei der paint-Methode AWT, Swing, JavaFX & SWT 5
J ActionListener soll auf paint() Methode zugreifen AWT, Swing, JavaFX & SWT 1
J Problem mit der paint Methode AWT, Swing, JavaFX & SWT 0
Junb 2D-Grafik paint() Methode bugt? AWT, Swing, JavaFX & SWT 2
C JFrame paint ohne hintergrund nutzen AWT, Swing, JavaFX & SWT 6
I Paint-Methode von nicht statischen Objekten aufrufen AWT, Swing, JavaFX & SWT 3
A Swing Paint mit Button Clear den Hintergrund säubern um wieder zeichnen zu können AWT, Swing, JavaFX & SWT 2
K 2D-Grafik Paint - Wie binde ich repaint ein? AWT, Swing, JavaFX & SWT 8
D JSlider "laggt" nach überschreiben der paint methode AWT, Swing, JavaFX & SWT 2
S paint() verzögern AWT, Swing, JavaFX & SWT 9
K AWT begrenzte anzahl paint aufrufe AWT, Swing, JavaFX & SWT 6
B Infolabel Probleme mit Paint() ? AWT, Swing, JavaFX & SWT 8
L AWT paint mit ArrayList und Iterator AWT, Swing, JavaFX & SWT 3
Furtano AWT paint braucht ein Graphics Objekt ? AWT, Swing, JavaFX & SWT 2
L Swing 64bit Problem mit paint/paintComponent AWT, Swing, JavaFX & SWT 7
A Paint Methode externer auruf AWT, Swing, JavaFX & SWT 5
T JFrame und paint() AWT, Swing, JavaFX & SWT 5
B Ablauf der paint-Methoden von JComponents AWT, Swing, JavaFX & SWT 20
J AWT Methode paint() AWT, Swing, JavaFX & SWT 4
F 2D-Grafik Hostkomponentengröße in paint AWT, Swing, JavaFX & SWT 2
L JFrame an Paint-Inhalt anpassen AWT, Swing, JavaFX & SWT 6
E Warum übermalt paint das ganze Fenster? AWT, Swing, JavaFX & SWT 15
X Bild via FileChooser in paint-Methode laden AWT, Swing, JavaFX & SWT 2
T paint() wird nicht aufgerufen AWT, Swing, JavaFX & SWT 8
M JMenuBar im Applet und paint AWT, Swing, JavaFX & SWT 9
G paint-Methode kopiert GUI AWT, Swing, JavaFX & SWT 14
H paint überlappend AWT, Swing, JavaFX & SWT 5
E paint AWT, Swing, JavaFX & SWT 3
H Swing paint() von JPanel wird nicht aufgerufen AWT, Swing, JavaFX & SWT 10
L AWT Paint(g) im Listener aufrufen AWT, Swing, JavaFX & SWT 2
S JCheckBox Paint AWT, Swing, JavaFX & SWT 7
F AWT Probleme mit der paint() methode AWT, Swing, JavaFX & SWT 2
C Unterschiedlicher Aufruf der paint() Methode ? (AWT/Swing) AWT, Swing, JavaFX & SWT 2
L Problem mit paint Methode und Bild AWT, Swing, JavaFX & SWT 7
F Swing Paint mit Canvas Element AWT, Swing, JavaFX & SWT 35
K AWT paint wird nicht aufgerufen AWT, Swing, JavaFX & SWT 7
R LayoutManager Image Paint + Text Panel AWT, Swing, JavaFX & SWT 10
F paint-Methode des JComboboxEditorComponent AWT, Swing, JavaFX & SWT 2
S Threads in einen Frame zeichnen lassen (Paint()?!) AWT, Swing, JavaFX & SWT 5
radiac Swing JFrame - paint(g) - FrameObjects bei activeRendering AWT, Swing, JavaFX & SWT 3
I AWT paint() in MouseEvent aufrufen klappt nicht AWT, Swing, JavaFX & SWT 8
T paint() wird zweimal ausgeführt AWT, Swing, JavaFX & SWT 6
hdi Swing JLabel & paint-Methode gemixt - wie schlimm wirklich? AWT, Swing, JavaFX & SWT 5
N Paint methode anhalten und neustarten AWT, Swing, JavaFX & SWT 5
H AWT Wann ist paint() fertig? AWT, Swing, JavaFX & SWT 7
R [gelöst]Fenster schließen - trotz Endlosschleife in der Paint-Methode? AWT, Swing, JavaFX & SWT 3
W Steuerelemente und paint() in einem JPanel AWT, Swing, JavaFX & SWT 3
M Allgemeines zur paint Methode AWT, Swing, JavaFX & SWT 5
M AWT Component/Canvas erzeugt unerwünschten Rahmen bei paint AWT, Swing, JavaFX & SWT 3
T Dialog ohne Frame, direktes paint in graphics AWT, Swing, JavaFX & SWT 5
G Probleme mit repaint / paint AWT, Swing, JavaFX & SWT 6
A paint()-Methode für Videoexport nutzen AWT, Swing, JavaFX & SWT 2
K repaint() ruft paint() nicht auf AWT, Swing, JavaFX & SWT 14
J Canvas / paint() AWT, Swing, JavaFX & SWT 2
bugmenot paint() verzögert ausgeführt? AWT, Swing, JavaFX & SWT 4
S paint() in anderen Methoden AWT, Swing, JavaFX & SWT 5
D Paint() Methode aus einer anderen Klasse aufrufen AWT, Swing, JavaFX & SWT 6
H paint verwenden AWT, Swing, JavaFX & SWT 3
S java.awt.Component und paint() AWT, Swing, JavaFX & SWT 4
A Paint funktioniert nicht richtig AWT, Swing, JavaFX & SWT 7
L Dynamisches Ändern der Größe in JPanel mit paint()-Methode AWT, Swing, JavaFX & SWT 8
G JScrollPane mit "paint" scrollt nicht AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben