Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-1248978

Choice has a limitation on item number to 21

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: P3 P3
    • None
    • 1.0.1
    • client-libs
    • generic
    • solaris_2.5

      [5/7/96 xykong]

      The following application program is copied from
      the JAVA tutorial with slight modification.

      Note that I have added more choice items in
      the init() method for Choice c.

      The total choices in the example is 22. This
      program will not run. However, if I comment out
      the number 22 choice, the program will run.

      /*
       * 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");
      c.addItem("Choice Item 4");
              c.addItem("Choice Item 5");
              c.addItem("Choice Item 6");
              c.addItem("Choice Item 7");
              c.addItem("Choice Item 8");
              c.addItem("Choice Item 9");
              c.addItem("Choice Item 10");
              c.addItem("Choice Item 11");
              c.addItem("Choice Item 12");
              c.addItem("Choice Item 13");
              c.addItem("Choice Item 14");
              c.addItem("Choice Item 15");
              c.addItem("Choice Item 16");
              c.addItem("Choice Item 17");
              c.addItem("Choice Item 18");
              c.addItem("Choice Item 19");
              c.addItem("Choice Item 20");
              c.addItem("Choice Item 21");
              c.addItem("Choice Item 22"); // if I commented it out, the application will run

              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();
          }
      }

            amfowler Anne Fowler (Inactive)
            duke J. Duke
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: