2017-05-15 1 views

Répondre

1

Fondamentalement, il suffit d'obtenir la police que vous souhaitez utiliser et définir dans l'événement GC dans les méthodes measure et paint.

Cela pourrait être quelque chose comme:

private static final int TEXT_MARGIN = 3; 

@Override 
protected void measure(Event event, Object element) 
{ 
    String text = ... get the text 

    Font font = JFaceResources.getFont(JFaceResources.HEADER_FONT); 

    event.gc.setFont(font); 

    Point size = event.gc.textExtent(text); 

    event.width = size.x + 2 * TEXT_MARGIN; 
    event.height = Math.max(event.height, size.y + 2 * TEXT_MARGIN); 
} 

@Override 
protected void paint(Event event, Object element) 
{ 
    String text = ... get the text 

    Font font = JFaceResources.getFont(JFaceResources.HEADER_FONT); 

    event.gc.setFont(font); 

    event.gc.drawText(text, event.x + TEXT_MARGIN, event.y + TEXT_MARGIN, true); 
} 

J'utilise ici JFaceResources.getFont pour obtenir une des polices JFace existantes. Vous pouvez également créer votre propre police - mais assurez-vous de le faire seulement une fois faire pas le créer chaque fois measure ou paint est appelée.

+0

Pouvez-vous donner un exemple de la façon de créer sa propre police? – user04556

+1

Désolé mais ce n'est pas quelque chose que je fais. S'il s'agit d'un plugin Eclipse, les polices peuvent être définies dans le support CSS ou le point d'extension 'org.eclipse.ui.themes'. Pour une application JFace/SWT simple, regardez les différents constructeurs 'Font'. –