Avatar billede devpac Nybegynder
31. januar 2003 - 14:01 Der er 2 kommentarer

højrestilling af drawstring ?

Hej

- Er der en let måde at 'aligne' sin tekst til f.eks. en højrestilling via drawstring ???
Avatar billede per_s Nybegynder
03. februar 2003 - 12:57 #1
FontMetrics objektet kan give dig bredden af strengen, som du kan justere positionen med.  Brug f.eks.:

void drawStringRightAligned(Graphics g, String str, int x, int y) {
  int w = g.getFontMetrics().stringWidth(str);
  g.drawString(str, x - w, y);
}

/per_s
Avatar billede =maddog= Nybegynder
04. februar 2003 - 04:51 #2
Det her er en Label klasse, der kan højre- og venstrestille samt centrere. Det er udelukkende til inspiration. Der er allerede svaret på spørgsmålet.

class TransparentLabel extends Component {
   
    String label;
    int alignment;
    final static int LEFT = 0;
    final static int RIGHT = 1;
    final static int CENTER = 2;
   
    public TransparentLabel(String label, int alignment) {
        this.label=label;
        this.alignment=(alignment>=LEFT&&alignment<=CENTER)?alignment:LEFT;
    }
    public TransparentLabel() { this("",LEFT); }
   
    public TransparentLabel(String label) { this(label,LEFT); }
   
   
    public void setText(String label) {
        this.label = label;
        invalidate();
        repaint();
    }
   
    public String getText() { return this.label; }
   
    public Dimension getPreferredSize() {
        FontMetrics fm=getFontMetrics(getFont());
        return new Dimension(fm.stringWidth(label)+5,fm.getHeight()+5);
    }

    public Dimension getMinimumSize() {
        FontMetrics fm=getFontMetrics(getFont());
        return new Dimension(fm.stringWidth(label),fm.getHeight());
    }

    public void update(Graphics g) { paint(g); }

    public void paint(Graphics g) {
        Dimension d=getSize();
        g.setColor(getForeground());
        Font font=getFont();
        g.setFont(font);
        FontMetrics fm=getFontMetrics(font);
        int x = (alignment==CENTER)?(d.width-fm.stringWidth(label))/2:(alignment==RIGHT)?(d.width-fm.stringWidth(label))-5:5;
        g.drawString(label,x, d.height-(d.height-fm.getHeight())/2-fm.getMaxDescent());
    }
}
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