Avatar billede banielsen Nybegynder
11. juli 2004 - 17:07 Der er 2 kommentarer og
1 løsning

Printning med forskellige Font's i Java

jeg har et problem med at udskrive med flere Font's i java. Jeg vil f.eks. udskrive:
"tekst 1" (med str 16)
"tekst 2" (med str 14)
"tekst 3" (med str 12)

Mit problem er at jeg ikke ved i hvilke koordinater jeg skal udskrive "tekst 2", da jeg ikke ved i hvilke koordinater "tekst 1" slutter. Teksterne skal udskrives på samme side lige efter hinanden.
Avatar billede _carsten Nybegynder
11. juli 2004 - 22:37 #1
Du bruger klassen FontMetrics til at måle din tekst.
Klassen FontMetrics har en masse metoder beregnet til at måle tekst.

Her er et eksempel, jeg laver skrivearbejdet i klassen FontPanel.

import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import javax.swing.JPanel;

public class TestFont extends javax.swing.JFrame {
    public TestFont() {
        initComponents();
    }

    private void initComponents() {
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                exitForm(evt);
            }
        });

        getContentPane().add(new FontPanel(), java.awt.BorderLayout.CENTER);
        pack();
        setSize(300, 300);
    }

    private void exitForm(java.awt.event.WindowEvent evt) {
        System.exit(0);
    }

    public static void main(String args[]) {
        new TestFont().show();
    }
}


class FontPanel extends JPanel{
    public FontPanel(){
        setBackground(Color.white);
    }
   
    public void paintComponent( Graphics g){
        super.paintComponent(g);
       
        String fFamily = g.getFont().getFamily();
        int fStyle = g.getFont().getStyle();
       
        int y = 30;
       
        for(int i = 24; i > 0; i--){
            if (i % 2 == 0){
                g.setFont( new Font(fFamily, fStyle, i) );
                font_m = g.getFontMetrics(g.getFont());
                y += font_m.getHeight();
                g.drawString("Abekat", 20, y);
            }
        }
    }
    private FontMetrics font_m;
}
Avatar billede banielsen Nybegynder
11. juli 2004 - 23:05 #2
det var bare helt perfekt. Tusind tak for hjælpen.
(jeg er ny her på eksperten... jeg accepterede dit svar - får du så ikke dine point automatisk)
Avatar billede _carsten Nybegynder
11. juli 2004 - 23:10 #3
Jo - det gør jeg, så den er i vinkel.

Tak :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester