biss with Kaffe (part II)

Magnus Therning etrius at hem2.passagen.se
Thu Nov 27 23:33:37 PST 1997


Sorry, I forgot to attach the source...

Here it is.

-- 
Magnus Therning ( etrius at hem2.passagen.se )
http://hem2.passagen.se/etrius/
PGP public-key via finger (magus at pinya.husaren.sgs.student.gu.se)
               and WWW

-------------- next part --------------
/*
 * Copyright (c) 1995, 1996 Sun Microsystems, Inc. All Rights Reserved.
 *
 * Permission to use, copy, modify, and distribute this software
 * and its documentation for NON-COMMERCIAL purposes and without
 * fee is hereby granted provided that this copyright notice
 * appears in all copies. Please refer to the file "copyright.html"
 * for further important copyright and licensing information.
 *
 * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
 * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
 * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
 * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
 * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
 * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
 */
import java.awt.*;

public class GUIWindow extends Frame {
  boolean inAnApplet = true;
  final String FILEDIALOGMENUITEM = "File dialog...";
  
  public GUIWindow() {
    Panel bottomPanel = new Panel();
    Panel centerPanel = new Panel();
    setLayout(new BorderLayout());
    
    //Set up the menu bar.
    MenuBar mb = new MenuBar();
    Menu m = new Menu("Menu");
    m.add(new MenuItem("Menu item 1"));
    m.add(new CheckboxMenuItem("Menu item 2"));
    m.add(new MenuItem("Menu item 3"));
    m.add(new MenuItem("-"));
    m.add(new MenuItem(FILEDIALOGMENUITEM));
    mb.add(m);
    setMenuBar(mb);
    
    //Add small things at the bottom of the window.
    bottomPanel.add(new TextField("TextField"));
    bottomPanel.add(new Button("Button"));
    bottomPanel.add(new Checkbox("Checkbox"));
    Choice c = new Choice();
    c.addItem("Choice Item 1");
    c.addItem("Choice Item 2");
    c.addItem("Choice Item 3");
    bottomPanel.add(c);
    add("South", bottomPanel);
    
    //Add big things to the center area of the window.
    centerPanel.setLayout(new GridLayout(1,2));
    //Put a canvas in the left column.
    centerPanel.add(new MyCanvas());
    //Put a label and a text area in the right column.
    Panel p = new Panel();
    p.setLayout(new BorderLayout());
    p.add("North", new Label("Label", Label.CENTER));
    p.add("Center", new TextArea("TextArea", 5, 20));
    centerPanel.add(p);
    add("Center", centerPanel);
    
    //Put a list on the right side of the window.
    List l = new List(3, false);
    for (int i = 1; i <= 10; i++) {
      l.addItem("List item " + i);
    }
    add("East", l); 
  }
  
  public boolean action(Event event, Object arg) {
    //The only action event we pay attention to is when the
    //user requests we bring up a FileDialog.
    if (event.target instanceof MenuItem) {
      if (((String)arg).equals(FILEDIALOGMENUITEM)) {
	FileDialog fd = new FileDialog(this, "FileDialog");
	fd.show();
      }
    }
    return true;
  }
  
  public boolean handleEvent(Event event) {
    //If we're running as an application, closing the window
    //should quit the application.
    if (event.id == Event.WINDOW_DESTROY) {
      if (inAnApplet) {
	dispose();
      } else {
	System.exit(0);
      }
    }
    return super.handleEvent(event);
  }
  
  public static void main(String args[]) {
    GUIWindow window = new GUIWindow();
    window.inAnApplet = false;
    
    window.setTitle("The AWT Components");
    window.pack();
    window.show();
  }
  
}

//We can't just instantiate Canvas, since its default implementation
//gives us nothing interesting to look at or do.  So here's a Canvas
//subclass that draws something slightly interesting.
class MyCanvas extends Canvas {
  
  public void paint(Graphics g) {
    int w = size().width;
    int h = size().height;
    g.drawRect(0, 0, w - 1, h - 1);
    g.drawString("Canvas", (w - g.getFontMetrics().stringWidth("Canvas"))/2,
		 10);

    g.setFont(new Font("Helvetica", Font.PLAIN, 8));
    g.drawLine(10,10, 100,100);
    g.fillRect(9,9,3,3);
    g.drawString("(10,10)", 13, 10);
    g.fillRect(49,49,3,3);
    g.drawString("(50,50)", 53, 50);
    g.fillRect(99,99,3,3);
    g.drawString("(100,100)", 103, 100);
  }

  //If we don't specify this, the canvas might not show up at all
  //(depending on the layout manager).
  public Dimension minimumSize() {
    return new Dimension(150,130);
  }

  //If we don't specify this, the canvas might not show up at all
  //(depending on the layout manager).
  public Dimension preferredSize() {
    return minimumSize();
  }
}


More information about the kaffe mailing list