Mega Code Archive

 
Categories / Java Tutorial / Swing
 

FontChooser by Noah w

/* This code was found posted on a forum without any copyright  * restrictions. It was written by someone named Noah W.  * That's all I know */ /* I have modified the original code but claim no copyright on it of any kind */ /* This file is part of BORG.     BORG is free software; you can redistribute it and/or modify     it under the terms of the GNU General Public License as published by     the Free Software Foundation; either version 2 of the License, or     (at your option) any later version.     BORG is distributed in the hope that it will be useful,     but WITHOUT ANY WARRANTY; without even the implied warranty of     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the     GNU General Public License for more details.     You should have received a copy of the GNU General Public License     along with BORG; if not, write to the Free Software     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA Copyright 2003 by Mike Berger  */ import java.awt.Color; import java.awt.Font; import java.awt.Frame; import java.awt.GraphicsEnvironment; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.util.Enumeration; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextField; import javax.swing.UIManager; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import javax.swing.plaf.FontUIResource; // // FontChooser by Noah w. // public class NwFontChooserS extends JDialog {     String[] styleList = new String[] { "Plain", "Bold", "Italic" };     String[] sizeList =     new String[] {         "3",         "4",         "5",         "6",         "7",         "8",         "9",         "10",         "11",         "12",         "13",         "14",         "15",         "16",         "17",         "18",         "19",         "20",         "22",         "24",         "27",         "30",         "34",         "39",         "45",         "51",         "60" };         NwList StyleList;         NwList FontList;         NwList SizeList;         static JLabel Sample = new JLabel();         boolean ob = false;                  private NwFontChooserS(Frame parent, boolean modal, Font font) {             super(parent, modal);             initAll();             setTitle("Font Choosr");             if (font == null)                 font = Sample.getFont();             FontList.setSelectedItem(font.getName());             SizeList.setSelectedItem(font.getSize() + "");             StyleList.setSelectedItem(styleList[font.getStyle()]);                      }         public static Font showDialog(Frame parent, String s, Font font) {             NwFontChooserS fd = new NwFontChooserS(parent, true, font);             if (s != null)                 fd.setTitle(s);             fd.setVisible(true);             Font fo = null;             if (fd.ob)                 fo = Sample.getFont();             fd.dispose();             return (fo);         }         private void initAll() {             getContentPane().setLayout(null);             setBounds(50, 50, 450, 450);             addLists();             addButtons();             Sample.setBounds(10, 320, 415, 25);             Sample.setForeground(Color.black);             getContentPane().add(Sample);             addWindowListener(new WindowAdapter() {                 public void windowClosing(WindowEvent e) {                     setVisible(false);                 }             });         }         private void addLists() {             FontList =             new NwList(             GraphicsEnvironment             .getLocalGraphicsEnvironment()             .getAvailableFontFamilyNames());             StyleList = new NwList(styleList);             SizeList = new NwList(sizeList);             FontList.setBounds(10, 10, 260, 295);             StyleList.setBounds(280, 10, 80, 295);             SizeList.setBounds(370, 10, 40, 295);             getContentPane().add(FontList);             getContentPane().add(StyleList);             getContentPane().add(SizeList);         }         private void addButtons() {             JButton ok = new JButton("OK");             ok.setMargin(new Insets(0, 0, 0, 0));             JButton ca = new JButton("Cancel");             ca.setMargin(new Insets(0, 0, 0, 0));             ok.setBounds(260, 350, 70, 20);             ok.setFont(new Font(" ", 1, 11));             ca.setBounds(340, 350, 70, 20);             ca.setFont(new Font(" ", 1, 12));             getContentPane().add(ok);             getContentPane().add(ca);             ok.addActionListener(new ActionListener() {                 public void actionPerformed(ActionEvent e) {                     setVisible(false);                     ob = true;                 }             });             ca.addActionListener(new ActionListener() {                 public void actionPerformed(ActionEvent e) {                     setVisible(false);                     ob = false;                 }             });         }         private void showSample() {             int g = 0;             try {                 g = Integer.parseInt(SizeList.getSelectedValue());             }             catch (NumberFormatException nfe) {             }             String st = StyleList.getSelectedValue();             int s = Font.PLAIN;             if (st.equalsIgnoreCase("Bold"))                 s = Font.BOLD;             if (st.equalsIgnoreCase("Italic"))                 s = Font.ITALIC;             Sample.setFont(new Font(FontList.getSelectedValue(), s, g));             Sample.setText("The quick brown fox jumped over the lazy dog.");         }         //////////////////////////////////////////////////////////////////////         private class NwList extends JPanel {             JList jl;             JScrollPane sp;             JLabel jt;             String si = " ";                          public NwList(String[] values) {                 setLayout(null);                 jl = new JList(values);                 sp = new JScrollPane(jl);                 jt = new JLabel();                 jt.setBackground(Color.white);                 jt.setForeground(Color.black);                 jt.setOpaque(true);                 jt.setBorder(new JTextField().getBorder());                 jt.setFont(getFont());                 jl.setBounds(0, 0, 100, 1000);                 jl.setBackground(Color.white);                 jl.addListSelectionListener(new ListSelectionListener() {                     public void valueChanged(ListSelectionEvent e) {                         jt.setText((String) jl.getSelectedValue());                         si = (String) jl.getSelectedValue();                         showSample();                     }                 });                 add(sp);                 add(jt);             }             public String getSelectedValue() {                 return (si);             }             public void setSelectedItem(String s) {                 jl.setSelectedValue(s, true);             }             public void setBounds(int x, int y, int w, int h) {                 super.setBounds(x, y, w, h);                 sp.setBounds(0, y + 12, w, h - 23);                 sp.revalidate();                 jt.setBounds(0, 0, w, 20);             }         }                  static public String fontString(Font font) {             String fs = font.getFamily();             if( !font.isPlain() ) {                 fs += "-";                 if( font.isBold()) {                     fs += "BOLD";                 }                 if( font.isItalic()) {                     fs += "ITALIC";                 }             }             fs += "-" + font.getSize();             return(fs);         }                  static public void setDefaultFont(Font f ) {             FontUIResource fui = new FontUIResource(f);             Enumeration<Object> keys = UIManager.getDefaults().keys();             while (keys.hasMoreElements()) {                 Object key = keys.nextElement();                 Object value = UIManager.get(key);                 if (value instanceof FontUIResource)                     UIManager.put(key, fui);             }                      }                  public static void main(String args[]) {             Font font = null;             font = NwFontChooserS.showDialog(null, null, null);                          System.out.println(fontString(font));         } }