UnicodeDisplaypublic class UnicodeDisplay extends JFrame implements ActionListenerThis program displays Unicode glyphs using user-specified fonts
and font styles. |
Fields Summary |
---|
int | page | UnicodePanel | p | JScrollBar | b | String | fontfamily | int | fontstyle |
Constructors Summary |
---|
public UnicodeDisplay(String name)This constructor creates the frame, menubar, and scrollbar
that work along with the UnicodePanel class, defined below
super(name);
p = new UnicodePanel(); // Create the panel
p.setBase((char)(page * 0x100)); // Initialize it
getContentPane().add(p, "Center"); // Center it
// Create and set up a scrollbar, and put it on the right
b = new JScrollBar(Scrollbar.VERTICAL, 0, 1, 0, 0xFF);
b.setUnitIncrement(1);
b.setBlockIncrement(0x10);
b.addAdjustmentListener(new AdjustmentListener() {
public void adjustmentValueChanged(AdjustmentEvent e) {
page = e.getValue();
p.setBase((char)(page * 0x100));
}
});
getContentPane().add(b, "East");
// Set things up so we respond to window close requests
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) { System.exit(0); }
});
// Handle Page Up and Page Down and the up and down arrow keys
this.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
int code = e.getKeyCode();
int oldpage = page;
if ((code == KeyEvent.VK_PAGE_UP) ||
(code == KeyEvent.VK_UP)) {
if (e.isShiftDown()) page -= 0x10;
else page -= 1;
if (page < 0) page = 0;
}
else if ((code == KeyEvent.VK_PAGE_DOWN) ||
(code == KeyEvent.VK_DOWN)) {
if (e.isShiftDown()) page += 0x10;
else page += 1;
if (page > 0xff) page = 0xff;
}
if (page != oldpage) { // if anything has changed...
p.setBase((char) (page * 0x100)); // update the display
b.setValue(page); // and update scrollbar to match
}
}
});
// Set up a menu system to change fonts. Use a convenience method.
JMenuBar menubar = new JMenuBar();
this.setJMenuBar(menubar);
menubar.add(makemenu("Font Family",
new String[] {"Serif", "SansSerif", "Monospaced"},
this));
menubar.add(makemenu("Font Style",
new String[]{
"Plain","Italic","Bold","BoldItalic"
}, this));
|
Methods Summary |
---|
public void | actionPerformed(java.awt.event.ActionEvent e)This method handles the items in the menubars
String cmd = e.getActionCommand();
if (cmd.equals("Serif")) fontfamily = "Serif";
else if (cmd.equals("SansSerif")) fontfamily = "SansSerif";
else if (cmd.equals("Monospaced")) fontfamily = "Monospaced";
else if (cmd.equals("Plain")) fontstyle = Font.PLAIN;
else if (cmd.equals("Italic")) fontstyle = Font.ITALIC;
else if (cmd.equals("Bold")) fontstyle = Font.BOLD;
else if (cmd.equals("BoldItalic")) fontstyle = Font.BOLD + Font.ITALIC;
p.setFont(fontfamily, fontstyle);
| public static void | main(java.lang.String[] args)The main() program just create a window, packs it, and shows it
UnicodeDisplay f = new UnicodeDisplay("Unicode Displayer");
f.pack();
f.show();
| private javax.swing.JMenu | makemenu(java.lang.String name, java.lang.String[] itemnames, java.awt.event.ActionListener listener)A convenience method to create a Menu from an array of items
JMenu m = new JMenu(name);
for(int i = 0; i < itemnames.length; i++) {
JMenuItem item = new JMenuItem(itemnames[i]);
item.addActionListener(listener);
item.setActionCommand(itemnames[i]); // okay here, though
m.add(item);
}
return m;
|
|