Mega Code Archive

 
Categories / Java Tutorial / SWT
 

To use the font selection dialog to change both the font and the color of a label

import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.FontDialog; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; public class FontDialogColorFontData {   public static void main(String[] args) {     Display display = new Display();     final Shell shell = new Shell(display);     shell.setText("Font Chooser");     shell.setLayout(new GridLayout(2, false));     final Label fontLabel = new Label(shell, SWT.NONE);     fontLabel.setText("The selected font");     Button button = new Button(shell, SWT.PUSH);     button.setText("Font...");     button.addSelectionListener(new SelectionAdapter() {       public void widgetSelected(SelectionEvent event) {         Font font = null;         Color color = null;         FontDialog dlg = new FontDialog(shell);         if (font != null)           dlg.setFontList(fontLabel.getFont().getFontData());         if (color != null)           dlg.setRGB(color.getRGB());         if (dlg.open() != null) {           if (font != null)             font.dispose();           if (color != null)             color.dispose();           font = new Font(shell.getDisplay(), dlg.getFontList());           fontLabel.setFont(font);           color = new Color(shell.getDisplay(), dlg.getRGB());           fontLabel.setForeground(color);           shell.pack();           if (font != null)             font.dispose();           if (color != null)             color.dispose();         }       }     });     shell.pack();     shell.open();     while (!shell.isDisposed()) {       if (!display.readAndDispatch()) {         display.sleep();       }     }     display.dispose();   } }