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

Lightweight Container setLayout(null) does not work

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Cannot Reproduce
    • Icon: P4 P4
    • None
    • 1.1.1
    • client-libs
    • x86
    • windows_95



      Name: mc57594 Date: 07/08/97


      Lightweight Container setLayout(null) does not work
      which causes problems when attempting to manually
      layout contained heavyweight (with peer) components.
      Native peer components are not handled correctly and
      end up being placed in the "middle" of the container.

      This is the middle "review panel" that is shown
      implemented via subclassing Panel at the following
      URL: http://www.djtraxx.com/gui/

      However, it seems that when subclassing Container
      instead, the buttons and "word wrap review canvas"
      end up being shifted about 150 pixels to the left
      which destroys the formatting control i had when
      subclassing Panel.

      Is this because Lightweight Containers CANNOT
      contain heavyweight "peered" components? If so,
      please state this explicitly in your docs as it
      could be the cause of many a headache. If you
      can fire off an email to let me know the status
      of this you could save me a ton of trial and
      error work.

      public final class reviewPanel extends Container
      {

              public int itemindex,itemcount;

              //these are protected so our event handler
              //can check their state
              protected Button order,play,next,prev;
              private Font buttonFont;
              private Font reviewFont;
              private WordWrapCanvas review;

              protected final static int THIS = 0;
              protected final static int ORDERBUTTON = 1;
              protected final static int PLAYBUTTON = 2;
              protected final static int NEXTBUTTON = 3;
              protected final static int PREVBUTTON = 4;

              private String title=null,artist=null,label=null,price=null;

      reviewPanel() {
             super();


             setLayout(null);



             ProgramManager.rp = this;

             reviewPanelEventHandler evt = new
      reviewPanelEventHandler(this,THIS);
             this.addKeyListener(evt);






             buttonFont = new Font("Helvetica",Font.PLAIN,11);
             reviewFont = new Font("TimesRoman",Font.BOLD,14);

             evt = new reviewPanelEventHandler(this,PLAYBUTTON);
             play = new Button("Listen");
             play.setFont(buttonFont);

             play.addActionListener(evt);
             play.addMouseListener(evt);
             add(play);
             play.setBounds(266,6,95,20);
             
             evt = new reviewPanelEventHandler(this,PREVBUTTON);
             prev = new Button("<<");
             prev.setFont(buttonFont);
             prev.addActionListener(evt);
             prev.addMouseListener(evt);
             add(prev);
             prev.setBounds(266,31,47,20);

             evt = new reviewPanelEventHandler(this,NEXTBUTTON);
             next = new Button(">>");
             next.setFont(buttonFont);
             next.addActionListener(evt);
             next.addMouseListener(evt);
             add(next);
             next.setBounds(314,31,47,20);


             evt = new reviewPanelEventHandler(this,ORDERBUTTON);
             order = new Button("Order");
             order.setFont(buttonFont);
             order.addActionListener(evt);
             order.addMouseListener(evt);
             add(order);
             order.setBounds(266,56,95,20);

            review = new WordWrapCanvas(Color.black,Color.green, reviewFont,"
      ",344,80,0);
            add(review);
            review.setBounds(14,82,344,80);

              order.setLabel("Order");
              play.setEnabled(false);
              prev.setEnabled(false);
              next.setEnabled(false);
              order.setEnabled(false);


      } //end constructor


      public final synchronized void update(Graphics g) {paint(g);}

      public final synchronized void paint(Graphics g) {

           g.setColor(Color.lightGray);
           g.fill3DRect(0,0,369,178,true);

           g.setColor(Color.black);

           g.fillRoundRect(6,6,255,70,15,15);

           g.fillRoundRect(6,82,356,90,15,15);

           g.setColor(Color.lightGray);
           g.setFont(reviewFont);

           g.drawString("Title:",15,21);
           g.drawString("Artist:",15,37);
           g.drawString("Label:",15,53);
           g.drawString("Price:",15,69);

           if (title != null) {

           g.setColor(Color.green);
           g.drawString(title,61,21);
           g.drawString(artist,61,37);
           g.drawString(label,61,53);
           g.drawString(price,61,69);
           }
      }

      public synchronized void clearReview() {
              clearReviewText();
              order.setLabel("Order");
              play.setEnabled(false);
              prev.setEnabled(false);
              next.setEnabled(false);
              order.setEnabled(false);
      }

      public void clearReviewText() {
           Graphics g = getGraphics();
           g.setColor(Color.black);
           g.fillRect(61,7,190,64);
           g.dispose();
           review.updateContent(" ");
      }

      public synchronized void addReview(CrateItem ci) {

           clearReview();
           Graphics g = getGraphics();
           g.setColor(Color.green);
           g.setFont(reviewFont);
           g.drawString(title=ci.title,61,21);
           g.drawString(artist=ci.artist,61,37);
           g.drawString(label=ci.label,61,53);

           if (ci.canOrder()) price = "$"+ci.price;
           else price = "";

           g.drawString(price,61,69);
           g.dispose();

           review.updateContent(ci.review);
           ProgramManager.mc.changeRecordColor(true);

           play.setEnabled(true);

           if (!ci.canOrder()) order.setLabel("Request");

           order.setEnabled(true);

           if (CrateManager.currentCrate.onFirstItem())
      next.setEnabled(true);

           else {
                 if (CrateManager.currentCrate.onLastItem())
      prev.setEnabled(true);
                 else {
                      next.setEnabled(true);
                      prev.setEnabled(true);
                   }
           }

              ProgramManager.cp.setRightMessage("Item "+(itemindex+1)+" of
      "+itemcount);

      }

      public void reset() {

              itemindex = 0;
              CrateItem ci = CrateManager.currentCrate.getCrateItem(0);
              itemcount = CrateManager.currentCrate.getNumItems();
              addReview(ci);
             
      ProgramManager.mc.resetScrollBarValues(0,itemcount-1,0,itemcount);
      }

      public void changeReview(int idx,Component source) {

            itemindex=idx;
            addReview(CrateManager.currentCrate.getCrateItem(itemindex));
            if (!(source instanceof Scrollbar))
                    ProgramManager.mc.setScrollBarValue(idx);
      }


      public Dimension getPreferredSize() {return new Dimension(370,179);}
      public Dimension getMinimumSize() {return new Dimension(370,179);}




      /*
      ########################################################

      EVENT HANDLING CODE

      ########################################################
      */


      final class reviewPanelEventHandler extends MouseAdapter
              implements ActionListener, KeyListener {

               private reviewPanel rp;
               private int component_id;

      reviewPanelEventHandler(reviewPanel r,int id) {rp=r;component_id=id;};


      private void nextReview(int idx) {

                      idx++;
                      rp.changeReview(idx,rp);
      }

      private void prevReview(int idx) {

                      idx--;
                      rp.changeReview(idx,rp);
      }

      public void actionPerformed(ActionEvent e){

                      int index = rp.itemindex;

                      switch(component_id) {

                      case reviewPanel.NEXTBUTTON:
                      // BUG FIX
                      // in win32 button remains focused even if diasbled
                      if (index == (rp.itemcount-1)) return;
                      //
                      // BUG FIX
                      nextReview(index);
                      return;

                      case reviewPanel.PLAYBUTTON:
                      System.out.println("just played item....");
                      return;

                      case reviewPanel.PREVBUTTON:
                      // BUG FIX
                      // in win32 button remains focused even if diasbled
                      if (index == 0) return;
                      //
                      // BUG FIX
                      prevReview(index);
                      return;

                      case reviewPanel.ORDERBUTTON:
                      shoppingCrate sc = ProgramManager.sc;
                      CrateItem ci =
      CrateManager.currentCrate.getCrateItem(index);
                      sc.addItem(ci);
                      return;
                      }//end switch
      }

      public void mouseEntered(MouseEvent e) {

                      switch(component_id) {

                      case reviewPanel.NEXTBUTTON:
                      if (next.isEnabled())
                      ProgramManager.cp.setLeftMessage("Next Crate Item");
                      return;

                      case reviewPanel.PLAYBUTTON:
                      if (play.isEnabled())
                      ProgramManager.cp.setLeftMessage("Press Button To Play
      RealAudio Sound Clip");
                      return;

                      case reviewPanel.PREVBUTTON:
                      if (prev.isEnabled())
                      ProgramManager.cp.setLeftMessage("Previous Crate Item");
                      return;

                      case reviewPanel.ORDERBUTTON:
                      //should also see if it's request or order
                      if (order.isEnabled())
                      ProgramManager.cp.setLeftMessage("Add This Item To Your
      Order");
                      return;
                      }//end switch

      }

      public void mouseExited(MouseEvent e) {

                      switch(component_id) {

                      case reviewPanel.NEXTBUTTON:
                      if (next.isEnabled())
                      ProgramManager.cp.setLeftMessage("");
                      return;

                      case reviewPanel.PLAYBUTTON:
                      if (play.isEnabled())
                      ProgramManager.cp.setLeftMessage("");
                      return;

                      case reviewPanel.PREVBUTTON:
                      if (prev.isEnabled())
                      ProgramManager.cp.setLeftMessage("");
                      return;

                      case reviewPanel.ORDERBUTTON:
                      if (order.isEnabled())
                      ProgramManager.cp.setLeftMessage("");
                      return;
                      }//end switch
      }

      }//end innerclass
      }//end class
      ======================================================================

            jdunnsunw Jeffrey Dunn (Inactive)
            mchamnessunw Mark Chamness (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: