import java.awt.*; public class BlockCanvas extends Canvas { CharacterBlock block = CharacterBlock.getBlock("Basic Latin"); int charWidth = 20; int charHeight = 15; int hgap = 5; int vgap = 0; public BlockCanvas() { setFont(new Font("Monospaced", Font.BOLD, 12)); } public void setBlock(CharacterBlock block) { this.block = block; this.repaint(); } public CharacterBlock getBlock() { return block; } public void paint(Graphics g) { char[] charsOnPage = block.getCharactersInBlock(); int charsPerRow = (getSize().width - 2*hgap)/charWidth; if (charsPerRow <= 0) charsPerRow = 1; for (int i = 0; i < charsOnPage.length; i++) { int x = i % charsPerRow; int y = i / charsPerRow + 1; g.drawChars(charsOnPage, i, 1, hgap + charWidth*x, vgap + charHeight*y); } } }