// This program shows the displayed values for some Unicode symbols. // Note the command line doesn't generally support Unicode fonts. // // Written 3/2005 by Wayne Pollock, Tampa Florida USA. import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.*; public class UnicodeSymbols extends JApplet implements ActionListener { private JTextArea ta; private JLabel title, currentFontLbl; private Font font; // Need a font that can display Unicode! private ArrayList fontList; private JMenuBar menuBar; private JMenu fontMenu; public void init () { ta = new JTextArea( 11, 20 ); // TextArea to display symbols ta.setEditable( false ); // Find all Fonts that can display these symbols: fontList = new ArrayList(); Collections.addAll( fontList, GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts() ); for (Iterator i = fontList.iterator(); i.hasNext(); ) { Font f = i.next(); if ( ! f.canDisplay( '\u25B6' ) ) i.remove(); } //Create the menu bar: menuBar = new JMenuBar(); //Build the font menu: fontMenu = new JMenu( "Unicode Fonts" ); fontMenu.setMnemonic( KeyEvent.VK_U ); fontMenu.getAccessibleContext().setAccessibleDescription( "Menu of available Unicode fonts" ); menuBar.add( fontMenu ); // Populate the font menu with radio button menu items for each font: ButtonGroup fontGroup = new ButtonGroup(); JRadioButtonMenuItem item; // If no Unicode fonts found, add something anyway (disabled): if ( fontList.size() == 0 ) { fontList.add( new Font( "Lucida", Font.PLAIN, 18 ) ); item = new JRadioButtonMenuItem( "Non-Unicode Font" ); item.setEnabled( false ); fontGroup.add( item ); fontMenu.add( item ); } else { for ( Font f : fontList ) { item = new JRadioButtonMenuItem( f.getName() ); item.addActionListener( this ); // Hook up event handling. fontGroup.add( item ); fontMenu.add( item ); } } setJMenuBar( menuBar ); // Select the first font as default: fontMenu.getItem( 0 ).setSelected( true ); font = fontList.get( 0 ); ta.setFont( font.deriveFont( Font.PLAIN, 18.0F ) ); title = new JLabel( "Some Useful Unicode Symbols", JLabel.CENTER ); title.setFont( new Font( "SansSeriff", Font.BOLD, 18 ) ); title.setForeground( Color.BLUE ); currentFontLbl = new JLabel( "(Font used: \"" + font.getName() + "\")", JLabel.CENTER ); currentFontLbl.setFont( new Font( "SansSeriff", Font.BOLD, 14 ) ); currentFontLbl.setForeground( Color.BLUE ); // Layout and add the components: setContentPane( Box.createVerticalBox() ); add( title ); add( Box.createVerticalGlue() ); add( currentFontLbl ); add( Box.createVerticalGlue() ); add( Box.createVerticalGlue() ); add( new JScrollPane( ta ) ); addContent( ta ); } private void addContent ( JTextArea ta ) { ta.append( "\\u2103: \u2103 (Celsius degrees)\n" + "\\u2109: \u2109 (Fahrenheit degrees)\n" + "\\u00B0: \u00B0 (Generic degree symbol)\n\n" + "\\u2713: \u2713 (Checkmark symbol)\n" + "\\u2714: \u2714 (Heavy checkmark symbol)\n" + "\\u00A9: \u00A9 (Copyright symbol)\n\n" + "\\u2192: \u2192 (Right arrow symbol)\n" + "\\u25B6: \u25B6 (Heirarchical menu (arrow) symbol)\n" ); } public void actionPerformed ( ActionEvent event ) { // Update Font selection: String fontName = event.getActionCommand(); for ( Font f : fontList ) if ( f.getName().equals( fontName ) ) font = f; currentFontLbl.setText( "(Font used: \"" + font.getName() + "\")" ); ta.setFont( font.deriveFont( Font.PLAIN, 18.0F ) ); } public static void main ( String [] args ) { JFrame frame = new JFrame( "Some Useful Unicode Symbols" ); frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); JApplet me = new UnicodeSymbols(); frame.add( me, BorderLayout.CENTER ); me.init(); me.start(); frame.pack(); frame.setVisible( true ); } }