home *** CD-ROM | disk | FTP | other *** search
/ Learn Java Now / Learn_Java_Now_Microsoft_1996.iso / JavaNow / Code / Chap17 / FrameComponent / TestFrame.class (.txt) < prev    next >
Encoding:
Java Class File  |  1996-07-29  |  2.7 KB  |  66 lines

  1. import java.applet.Applet;
  2. import java.awt.Component;
  3. import java.awt.Container;
  4. import java.awt.Dimension;
  5. import java.awt.Event;
  6. import java.awt.FontMetrics;
  7. import java.awt.Frame;
  8. import java.awt.Graphics;
  9. import java.awt.Insets;
  10. import java.awt.Menu;
  11. import java.awt.MenuBar;
  12. import java.awt.MenuItem;
  13.  
  14. class TestFrame extends Frame {
  15.    private Applet m_appletParent;
  16.    private MenuBar m_MenuBar;
  17.    private Object m_objSelected;
  18.  
  19.    TestFrame(Applet appletParent) {
  20.       super("Test Frame");
  21.       this.m_appletParent = appletParent;
  22.       this.m_MenuBar = new MenuBar();
  23.       Menu menuFile = new Menu("File");
  24.       menuFile.add(new MenuItem("Open"));
  25.       menuFile.add(new MenuItem("Close"));
  26.       this.m_MenuBar.add(menuFile);
  27.       Menu menuEdit = new Menu("Edit");
  28.       menuEdit.add(new MenuItem("Copy"));
  29.       menuEdit.add(new MenuItem("Cut"));
  30.       menuEdit.add(new MenuItem("Paste"));
  31.       this.m_MenuBar.add(menuEdit);
  32.       ((Frame)this).setMenuBar(this.m_MenuBar);
  33.    }
  34.  
  35.    public boolean action(Event event, Object o) {
  36.       this.m_objSelected = o;
  37.       ((Component)this).repaint();
  38.       if (this.m_appletParent != null) {
  39.          this.m_appletParent.action(event, o);
  40.       }
  41.  
  42.       return true;
  43.    }
  44.  
  45.    public void paint(Graphics g) {
  46.       String s;
  47.       if (this.m_objSelected == null) {
  48.          s = "No menu item selected";
  49.       } else {
  50.          s = "You selected " + this.m_objSelected.toString();
  51.       }
  52.  
  53.       Dimension dimWin = ((Component)this).size();
  54.       Insets insFrame = ((Container)this).insets();
  55.       int nWinWidth = dimWin.width - (insFrame.left + insFrame.right);
  56.       int nWinHeight = dimWin.height - (insFrame.top + insFrame.bottom);
  57.       FontMetrics fm = ((Component)this).getFontMetrics(((Component)this).getFont());
  58.       int nStringHeight = fm.getHeight();
  59.       int nStringWidth = fm.stringWidth(s);
  60.       int nLeftOffset = (nWinWidth - nStringWidth) / 2;
  61.       int nTopOffset = (nWinHeight + nStringHeight) / 2;
  62.       g.drawString(s, nLeftOffset, nTopOffset);
  63.       g.drawRect(0, 0, nWinWidth - 1, nWinHeight - 1);
  64.    }
  65. }
  66.