import java.awt.Canvas; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics; class MyCanvas extends Canvas { Color bgColor = new Color(0,0,128); Color fgColor = new Color(255,255,0); String word = ""; int maxFontSize = 100; public void paint(Graphics g) { g.setColor(bgColor); g.fillRect(0,0,getSize().width-1,getSize().height-2); g.setColor(Color.black); g.drawRect(0,0,getSize().width-1,getSize().height-2); if (word.length()>0) { g.setColor(fgColor); // do auto-downsizing of font int fs = maxFontSize; Font f; FontMetrics fm; do { f = new Font("Dialog", Font.BOLD, fs); fm = g.getFontMetrics(f); fs -= 2; } while ((fm.stringWidth(word)>getSize().width-2) || (fm.getHeight()>getSize().height-2)); g.setFont(f); g.drawString(word, getSize().width/2-fm.stringWidth(word)/2, getSize().height/2-fm.getHeight()/2+fm.getAscent()); } } public void setWord(String txt) { word = txt; repaint(); } }