Display sketch code: NoGroupDemo.pde
While using a ClickableGroup is highly recommended, it is not absolutely necessary. This demo shows the coding that is needed if ClickableGroup is not used.
If one looks at the code, one sees that not using ClickableGroup causes the mouseReleased() method to become significantly more complicated than when a group is used. You will observe that in draw(), one needs to display each Clickable item. The code normally in updateGrp() has been replaced by the code in processAnyClicks().
In the mouseReleased() method, isOver() must be called for each Clickable item until the clicked item is found. If the mouse is over an item, then checkForClick() is called. When something is clicked, the drop down list of any ComboBox or Menu must be closed.
In the draw() method, the Button is drawn first because parts of it can be covered by the ComboBox. That means that in the mouseReleased() method, the ComboBox must be checked first.
// Strings arrays for the ComboBox String[] cmbStrings = {"Combo A", "Combo B", "Combo C"}; // Clickable items Button btn = new Button(25, 55, 90, 30, "Button", #DDDDDD, #AAAAAA, #DDDD00, #AAAA00); ComboBox cmb = new ComboBox(25, 25, 90, cmbStrings, #DDDDDD, #AAAAAA, #DDDD00, #AAAA00); ScrollSketch scrSketch; // Output string String msg; void setup() { size(320, 130); smooth(); frameRate(20); msg = "Click some items"; } // setup void draw() { background(#FFFFAA); // background color processAnyClicks(); fill(#000000); text("NoGroup Demo", 146, 20); text(msg, 146, 75); btn.display(); cmb.display(); } // draw void processAnyClicks() { if (btn.hasBeenClicked()) { msg = "The button was clicked"; } else if (cmb.hasBeenClicked()) { if (cmb.getClickedItemNum() == cmb.COMBO_BUTTON) msg = "The combo button was clicked"; else msg = "You clicked " + cmb.getSelectedItem().getLabel(); } } // processAnyClick void mouseReleased() { stillSearching_ = true; cmb.hideSomething(); // close the drop down list, if needed if (cmb.isOver()) cmb.checkForClick(); if (stillSearching_) { if (btn.isOver()) btn.checkForClick(); } } // mouseReleased |
Revised: 04/11/2014