Simple Event Listener Problem

Hi,
I am new to EventListeners so this might seem very simple to some of you.
Basically, I got a Frame (extending JFrame) into which I place several "Mini-JPanels". These panels are a separate class. In each of them there are a JCheckBox, a JLabel and some more unimportant elements.
I would like to add an ItemListener to each JCheckBox but place the itemStateChanged method into my JFrame. Is this possible or do I have to put the itemStateChanged method into the panels... but then how would my Frame know that a checkbox in a panel has been checked?
Thanks for your help,
Frank

hi, to use a Listener you call MyCeckbox.addItemListener( instancename of class where the events are computed). this class can be your Frame class. the class must implement the Methods of the Item Listener (itemStateCahanged for Example). In that Method the Event tells You what Component is the Source of the Event.

Similar Messages

  • URGENT : EVENT Listener Problem

    Hi All,
    Thanks for your time. I am facing a Small issue with Event
    dispatcher and Add Event listener. Well i will explain the problem.
    I am having one MovieClip named BUTTON_SET and i gave
    "ButtonSet.as" as linkage Class.
    Inside that BUTTON_SET i am having some Buttons and they are
    also having "UIButton.as" as linkage class
    UIButton Dispatching press and release events, But unable to
    capture it using ButtonSet Class. Here with i have attached the
    Code and i gave the Source URL Too.
    upto my Knowledge : UIButton class is not initiated When the
    ButtonSet is ready to addListener.
    Please Help me to fix this.
    if i don't find a solution i need to change all my class
    structures.
    CLICK HERE FOR SOURCE
    CODE

    According to your Code, When you are calling the InitHandler
    Functionction the Buttons may/may not be Initiated. So use the
    Enterframe to check whether its loaded or not.
    Write down this in the ButtonSet to replace the init Handler
    Call.
    this.onEnterFrame = Delegate.create(this, initHandler);
    inside the initHandler remove the function This will help you
    if you are not using any Enterframe for any other manipulation)
    delete this.onEnterFrame;

  • JList event listener problem

    I'm trying to define an event listener for a JList component. The code is shown below. The problem i'm having is that when elements are added to the JList none of the functions (callFunctionHere()) are being called. Can anyone tell me what i'm doing wrong? (elements are being added to the list using DefaultListModel.addElement())
            pnlWhere.lstCond.getModel().addListDataListener(new javax.swing.event.ListDataListener() {
                public void contentsChanged(ListDataEvent e) {
                    callFunctionHere();
                public void intervalRemoved(ListDataEvent e) {
                    callFunctionHere();
                public void intervalAdded(ListDataEvent e) {
                    callFunctionHere();
            });Thanks,
    Danny.

    Check out the KeyListener interface. You can create an implementation that searches for a string starting with the character of the key that was pressed.

  • [CS3][JS] beforeClose event listener problem

    Hi all,
    I want my script to do the following: every time when a user closes a document, I wish for "Check Spelling..." dialog box to show up and after the user finishes spell-checking, the document should be closed.
    But instead, if I have one document open, I get an error: Error Number: 53762, Error String: Action is not enabled, and if more than one document open, the dialog opens in the wrong document.
    As far as I understand, the problem is that the menu action is invoked AFTER the document has already been closed – it is quite clear that opening the dialog with no documents open makes no sense – that’s why the error occurs.
    Does anybody know how to solve this? Why beforeClose event type doesn’t correspond to its name? The scripting guide states: “beforeClose – Appears after a close-document request is made but before the document is closed.”
    Here is the script:
    #targetengine "session"
    main();
    function main(){
       var myEventListener = app.addEventListener("beforeClose", myCheckSpelling, false);
    function myCheckSpelling(myEvent){
       app.menuActions.item("Check Spelling...").invoke();
    Kasyan

    Thank you Ole.
    I've been at it for about 6 months.
    I am providing 3 modules. All modules are in 1 folder. That's why the ScriptPath & Department variables.
    FYI: app.pdfPlacePreferences.pageNumber was used solved issues with InEvenScript plugin for CS2. That plugin was NOT handling a loop call. To solve it, I've used a variable to turn ON & OFF the handler. "Import" is used in the OPEN script, and that will execute the event!
    1) Startup. I trimmed it for you but I kept the orignal OPEN-Event disabled. See PrePressEVENT.
    2) PrePressTEST. It's a trimmed version of the actual PrePressOPEN. But it makes InDesign crash. FYI: PrePressOPEN works perfectly when triggered manualy (Script Panel).
    3) PrepressEVENT. Disabled in Startup, I am using this one so I can debug the EVENT and do actual work at the same time. Until it crashed of course.
    The window.add() is what makes it crash. Without it, fine. But if removed myDoc = app.activeDocument points to the wrong one!
    Thank you in advance. Hope this is clear enough.
    Module STARTUP
    =====================
    #target indesign
    #targetengine "session"
    app.scriptPreferences.version = 5.0;
    //******************** BEGIN Main ********************
    var myScriptName = app.activeScript.fsName;
    var myScriptPath = app.activeScript.path;
    var myErrorStyle = "*****Error while Updating!"
    var myMsgStyle = "*****No UpDate! (Delete to Reset)";
    var myDept = "PrePress";
    //*** Initialize SCRIPT Variables
    app.scriptArgs.clear();
    app.scriptArgs.set("Department", "PrePress");
    app.scriptArgs.set("ErrorStyle", "*****Error while Updating!");
    app.scriptArgs.set("MsgStyle", "*****No UpDate! (Delete to Reset)");
    app.scriptArgs.set("Event_Path", myScriptPath); //***Path to InEventScript Plug-In
    app.scriptArgs.set("Event_Test", myScriptPath + "/"+myDept+"TEST.jsx"); //*** Debugging MODULE
    app.scriptArgs.set("Event_Open", myScriptPath + "/"+myDept+"OPEN.jsx");
    app.scriptArgs.set("Event_Close", myScriptPath + "/"+myDept+"CLOSE.jsx");
    app.scriptArgs.set("Event_Copy", myScriptPath + "/"+myDept+"COPY.jsx");
    app.scriptArgs.set("Event_Clean", myScriptPath + "/"+myDept+"CLEAN.jsx");
    app.scriptArgs.set("Event_Print", myScriptPath + "/"+myDept+"PRINT.jsx");
    app.scriptArgs.set("Event_App", myScriptPath + "/"+myDept+"APPPreferences.jsx");
    app.scriptArgs.set("Event_Doc", myScriptPath + "/"+myDept+"DOCPreferences.jsx");
    //*** Initialize GLOBAL Variables
    app.pdfPlacePreferences.pageNumber = 1; //***Flag to PREVENT InEventScript Plug-In RECURSIVE (Loop)
    SkipWRDS = new Array;
    //*** REMOVE all EVENTS
    app.eventListeners.everyItem().remove();
    //******************** EVENTS ********************
    //app.addEventListener("afterOpen", EventOpen, false); //STILL INDESIGN CRASH with OPEN !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    var tmp = "List of Events loaded\n----------------------\n";
    var myEvents = app.eventListeners;
    for (var cpt = 0; cpt < myEvents.length; cpt++)
    tmp += "Event : " + myEvents[cpt].parent.name + "\tType: " + myEvents[cpt].eventType + "\n";
    //alert ("\tPREPRESS Area\n\t\==========\n\n"+tmp);
    alert ("\tTEST Area\n\t=======\n\n"+tmp);
    //******************** END Main ********************
    //****************** FUNCTIONS Definitions ********************
    function EventOpen (itsEvent)
    var myExeSrcFile = new File (app.scriptArgs.get("Event_Open"));
    if (myExeSrcFile.exists)
    if (app.pdfPlacePreferences.pageNumber == 99999)
    app.pdfPlacePreferences.pageNumber = 1; //***Flag to PREVENT InEventScript Plug-In RECURSIVE (Loop)
    else
    app.pdfPlacePreferences.pageNumber = 1; //***Flag to PREVENT InEventScript Plug-In RECURSIVE (Loop)
    // itsEvent.preventDefault();
    // itsEvent.stopPropagation();
    itsEvent.parent.windows.add(); //*** Doc. has no Window!!!
    myExeSrcFile.open ('r:(read)');
    app.doScript(myExeSrcFile, ScriptLanguage.javascript);
    myExeSrcFile.close();
    else
    alert ("Error! Missing File:\n\n" + myExeSrcFile.fsName);
    return;
    Module PrePressTEST
    =====================
    #target indesign
    //#include "PrePressLIBRARY.jsxinc"
    app.scriptPreferences.version = 5.0;
    //******************** BEGIN Main ********************
    if (app.modalState) //*** Alert already displayed
    exit();
    if (app.pdfPlacePreferences.pageNumber == 99999)
    app.pdfPlacePreferences.pageNumber = 1; //***Flag to PREVENT InEventScript Plug-In RECURSIVE (Loop)
    exit();
    if (app.documents.length == 0)
    exit();
    var myDoc = app.activeDocument;
    //*** ALL DOCUMENTS PREFERENCE
    myDoc.textPreferences.showInvisibles = true;
    myDoc.viewPreferences.showRulers = true;
    myDoc.layoutWindows[0].transformReferencePoint = AnchorPoint.centerAnchor;
    alert (myDoc.name);
    //******************** END Main ********************
    Module PrePressEVENT
    =====================
    #target indesign
    #targetengine "session"
    app.scriptPreferences.version = 5.0;
    //******************** BEGIN Main ********************
    var myEvents = app.eventListeners;
    var tmp = "\nList of Events removed\n------------------------\n";
    for (var cpt = myEvents.length-1 ; cpt >= 0 ; cpt--)
    if (myEvents[cpt].eventType == "afterOpen")
    tmp += "Event #" + cpt + "\tType: " + myEvents[cpt].eventType + "\n";
    myEvents[cpt].remove(); //*** There MAY be MORE than 1 instance.
    //******************** EVENTS ********************
    app.addEventListener("afterOpen", EventOpen, false);
    tmp += "\nList of Events loaded\n----------------------\n";
    var myEvents = app.eventListeners;
    for (var cpt = 0; cpt < myEvents.length; cpt++)
    tmp += "Event : " + myEvents[cpt].parent.name + "\tType: " + myEvents[cpt].eventType + "\n";
    alert ("\tTEST Area\n\t=======\n\n"+tmp);
    //******************** END Main ********************
    //****************** FUNCTIONS Definitions ********************
    function EventOpen (itsEvent)
    // app.scriptArgs.set("Event_Listener", itsEvent.parent.toSource()); //*** PASS Argument
    var myExeSrcFile = new File (app.scriptArgs.get("Event_Test"));
    if (myExeSrcFile.exists)
    if (app.pdfPlacePreferences.pageNumber == 99999)
    app.pdfPlacePreferences.pageNumber = 1; //***Flag to PREVENT InEventScript Plug-In RECURSIVE (Loop)
    else
    app.pdfPlacePreferences.pageNumber = 1; //***Flag to PREVENT InEventScript Plug-In RECURSIVE (Loop)
    EventInfo (itsEvent);
    itsEvent.preventDefault();
    itsEvent.stopPropagation();
    itsEvent.parent.windows.add(); //*** Doc. has no Window!!!
    myExeSrcFile.open ('r:(read)');
    app.doScript(myExeSrcFile, ScriptLanguage.javascript);
    myExeSrcFile.close();
    alert ("Executed...");
    else
    alert ("Error! Missing File:\n\n" + myExeSrcFile.fsName);
    return;
    function EventInfo (itsEvent)
    var myString = "Handling Event: " +itsEvent.eventType;
    myString += "\r\rTarget: " + itsEvent.target + " " +itsEvent.target.name;
    myString += "\rCurrent: " +itsEvent.currentTarget + " " + itsEvent.currentTarget.name;
    myString += "\r\rPhase: " + GetPhaseName(itsEvent.eventPhase );
    myString += "\rCaptures: " +itsEvent.captures;
    myString += "\rBubbles: " + itsEvent.bubbles;
    myString += "\r\rCancelable: " +itsEvent.cancelable;
    myString += "\rStopped: " +itsEvent.propagationStopped;
    myString += "\rCanceled: " +itsEvent.defaultPrevented;
    myString += "\r\rTime: " +itsEvent.timeStamp;
    alert(myString);
    function GetPhaseName(myPhase)
    switch(myPhase){
    case EventPhases.atTarget:
    myPhaseName = "At Target";
    break;
    case EventPhases.bubblingPhase:
    myPhaseName = "Bubbling";
    break;
    case EventPhases.capturingPhase:
    myPhaseName = "Capturing";
    break;
    case EventPhases.done:
    myPhaseName = "Done";
    break;
    case EventPhases.notDispatching:
    myPhaseName = "Not Dispatching";
    break;
    return myPhaseName;

  • Menu/submenu managing and Event Listening problem

    Hi guys,
    I'm creating a flashwebsite and I've got a problem with submenu appearing/disappering.
    What is extremely easy in html/jquery is taking me overburned in actiuonscript: make appear a submenu only when the mouse cursor is over its button and not over itself.
    Indeed I've my button/MC, that contains its submenu (which is a vertical list of MC), and when I go over it, submenu appears, when I leave, sub menu becomes invisible.
    BUT, when I go over the space under the button (where my invisible submenu is), submenu become visible another time. I know that cause is the listener associated to the main button is linked to all its nested MC.
    My question is: there is a way to declare a listener only to a MC and not for all is nested elements?
    If not, what shopuld I do for my pourpose?
    function createNav(lang:String = 'it') {
        var nav:Array = new Array({label: "CHI SIAMO", url: "../chi-siamo/index.php"},
                                  {label: "PRODUZIONE ESECUTIVA", url: "../produzione-esecutiva/index.php"},
                                  {label: "FILMOGRAFIA", url: "../filmografia/index.php"},
                                  {label: "CAMPILOTS", url: ""},
                                  {label: "PROGETTI", url: ""},
                                  {label: "NEWS", url: ""},
                                  {label: "CONTATTI", url: ""},
                                  {label: "LINGUE", url: "", submenu:new Array({label:"ITALIANO", url:""},
                                                                               {label:"INGLESE", url:""},
                                                                               {label:"TEDESCO", url:""},
                                                                               {label:"FRANCESE", url:""}
        var navHeight:Number = 25;//single element height
       //BUTTON CREATION
        for (var i = 0;i < nav.length;i++) {
            var item:MovieClip = new NavLink();
            item.label.text = nav[i].label;
            item.href = nav[i].url;
            if(nav[i].submenu != null){    //SUBMENU CREATION
                for(var j:int = 0; j < nav[i].submenu.length; j++){
                    var subLabel = new SubLabel();
                    subLabel.x = subLabel.y = 18 * (j + 1);
                    subLabel.tfMC.text = nav[i].submenu[j].label;
                    item.addChild(subLabel);               
            item.buttonMode = true;
            item.mouseChildren = false;
            item.addEventListener(MouseEvent.CLICK, function(e) {
                href = e.target.href;
                gotoAndPlay('page2page');
            var subMenuAnim:Array = new Array();
            item.addEventListener(MouseEvent.MOUSE_OVER, function(e) {
                var iconCocc:MovieClip = e.target.coccinella;
                var iconRotTween:Tween = new Tween(iconCocc, "rotation", Back.easeOut, iconCocc.rotation, (iconCocc.rotation + ((Math.random() * 200) + 200)), 2, true);
                //APPREAING ANIMATION
            item.addEventListener(MouseEvent.MOUSE_OUT, function(e) {
                for(var i:int = 0; i < subMenuAnim.length; i++){
                   //DISAPPREAING ANIMATION
                subMenuAnim = new Array();
            item.y = navHeight * i;
            item.visible = false;
            item.coccinella.rotation = (Math.random() * 200);
            nav_container.addChild(item);

    What are you doing to make the submenu invisible?  If you set its visible property to false it should not interact with the mouse, but if you are changing its alpha property to 0, it will react.

  • Bitmap Event Listener Problem :(

    Hey,
    I have encountered a bitmap problem while embeding my image into my project.
    Since event listeners don't work on Bitmaps I am having troubles on what to do next so I can use event listeners on my image.
    Main Class - The section that adds the image in the class:
    var playImage:Bitmap = new Assets.play();
    playImage.x = 190;
    playImage.y = 165;
    playImage.name = "play";
    addChild(playImage);
    playImage.addEventListener(MouseEvent.CLICK, playClick);
    playImage.addEventListener(MouseEvent.ROLL_OVER, playRollOver);
    playImage.addEventListener(MouseEvent.ROLL_OVER, moregamesRollOut, false, 0, true);
    // ^^ Those EventListeners don't function because the image is Bitmap and it won't allow me to add the photo as a MovieClip
    Assets Class - How I embedded the image in the class:
    [Embed(source="../images/play.png")]
    public static var play:Class;
    What method do you suggest I do to get event listeners working on my embedded image?
    I am working with pure as3 in Flash Builder.
    Thanks,
    McbainGames11

    I don't work in Flash Builder but...
    I usually create a Sprite, add that to the stage and then add the bitmap to the sprite. For instance:
    var playImageHolder:Sprite = new Sprite();
    addChild(playImageHolder);
    var playImage:Bitmap = new Assets.play();
    playImageHolder.addChild(playImage);
    playImageHolder.x = 190;
    playImageHolder.y = 165;
    // etc...

  • Event Listener problems in browsers

    Hello,
    I'm having trouble with my List component. I'm trying to make
    an MP3 previewer, where users can select the song they wish to
    preview from a List (component). The problem is that it works just
    fine when I preview it locally, but it doesn't work properly in
    Firefox and sometimes in IE too. I've researched it on Google but
    it doesn't seem like anyone's had a similar problem. The Flash
    documentation also doesn't seem to present a solution.
    The structure of my design is as follows (in Actionscript):
    1. Read song names from a text file.
    2. Read the artist's name from a text file.
    3. Create a List component using song names as options.
    4. Create a class called Playback, which controls the
    playback of the selected song from the List.
    5. Create a class called Display, which displays the name of
    the selected song (this is irrelevant to the problem i think, but
    just listing it for the sake of completeness).
    6. Use addEventListener with List component to detect change
    in selection, and on change, call "playSong" and
    "displayNowPlaying" methods of Playback and Display classes.
    You can see what the previewer looks like and download all
    the files of it
    here.
    Please see if you can help me; I'm totally confused!
    Attached is the code on frame 1.
    Thanks,
    Mukul

    Nope that doesn't seem to solve the problem. I tried putting
    the listListener function and all the variable definitions outside
    of the onData, but still have the same problem! Is there a thing
    with the List component that you have to click into them before
    they're activated or something? Or might it be something with
    Firefox? It works almost all the time in IE.
    Thanks,
    Mukul

  • Simple Event Triggering Problem

    Hi,
          I'm having trouble with envent triggering. I have a few boolean controls on a front panel...yet they seem to not always repsond. Controls seem locked. I've attached a simlified version of the code. Stop control seems to be most responsive.. not sure why. Others are locked out (unless I click them very soon after the VI is run)
         I guess prehaps I'm missing someting fundamental!
         DS
    Attachments:
    mainmenu_VE_v2.vi ‏34 KB

    Try your original version, but click at the edges of the buttons, away from the text labels and it works fine.
    You have text labels covering most of the buttons.  Clicking on this text label does not get throuigh to the button....
    Get rid of the text labels and use the "Boolean Text" instead.  Right-click on a button and choose Visible Items-->Boolean Text.  This is text built-in to the button which will NOT obstruct your clicking.
    Shane.
    Say hello to my little friend.
    RFC 2323 FHE-Compliant

  • Adding an event listener to combo box

    I am working on a mortgage calculator and I cannot figure out how to add an event listener to a combo box.
    I want to get the mortgage term and interest rate to calucate the mortgage using the combo cox. Here is my program.
    Modify the mortgage program to allow the user to input the amount of a mortgage
    and then select from a menu of mortgage loans: 7 year at 5.35%, 15 year at 5.50%, and
    30 year at 5.75%. Use an array for the different loans. Display the mortgage payment
    amount. Then, list the loan balance and interest paid for each payment over the term
    of the loan. Allow the user to loop back and enter a new amount and make a new
    selection, with resulting new values. Allow user to exit if running as an application
    (can't do that for an applet though).
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.event.*;
    import java.text.NumberFormat;
    import java.util.Locale;
    //creates class MortgageCalculator
    public class MortgageCalculator extends JFrame implements ActionListener {
    //creates title for calculator
         JPanel row = new JPanel();
         JLabel mortgageCalculator = new JLabel("MORTGAGE CALCULATOR", JLabel.CENTER);
    //creates labels and text fields for amount entered          
         JPanel firstRow = new JPanel(new GridLayout(3,1,1,1));
         JLabel mortgageLabel = new JLabel("Mortgage Payment $", JLabel.LEFT);
         JTextField mortgageAmount = new JTextField(10);
         JPanel secondRow = new JPanel();
         JLabel termLabel = new JLabel("Mortgage Term/Interest Rate", JLabel.LEFT);
         String[] term = {"7", "15", "30"};
         JComboBox mortgageTerm = new JComboBox(term);
         JPanel thirdRow = new JPanel();
         JLabel interestLabel = new JLabel("Interest Rate (%)", JLabel.LEFT);
         String[] interest = {"5.35", "5.50", "5.75"};
         JComboBox interestRate = new JComboBox(interest);
         JPanel fourthRow = new JPanel(new GridLayout(3, 2, 10, 10));
         JLabel paymentLabel = new JLabel("Monthly Payment $", JLabel.LEFT);
         JTextField monthlyPayment = new JTextField(10);
    //create buttons to calculate payment and clear fields
         JPanel fifthRow = new JPanel(new GridLayout(3, 2, 1, 1));
         JButton calculateButton = new JButton("CALCULATE PAYMENT");
         JButton clearButton = new JButton("CLEAR");
         JButton exitButton = new JButton("EXIT");
    //Display area
         JPanel sixthRow = new JPanel(new GridLayout(2, 2, 10, 10));
         JLabel displayArea = new JLabel(" ", JLabel.LEFT);
         JTextArea textarea = new JTextArea(" ", 8, 50);
    public MortgageCalculator() {
         super("Mortgage Calculator");                     //title of frame
         setSize(550, 350);                                             //size of frame
         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         Container pane = getContentPane();
         GridLayout grid = new GridLayout(7, 3, 10, 10);
         pane.setLayout(grid);
         pane.add(row);
         pane.add(mortgageCalculator);
         pane.add(firstRow);
         pane.add(mortgageLabel);
         pane.add(mortgageAmount);
         pane.add(secondRow);
         pane.add(termLabel);
         pane.add(mortgageTerm);
         pane.add(thirdRow);
         pane.add(interestLabel);
         pane.add(interestRate);
         pane.add(fourthRow);
         pane.add(paymentLabel);
         pane.add(monthlyPayment);
         monthlyPayment.setEnabled(false);
         pane.add(fifthRow);
         pane.add(calculateButton);
         pane.add(clearButton);
         pane.add(exitButton);
         pane.add(sixthRow);
         pane.add(textarea); //adds texaarea to frame
         pane.add(displayArea);
         setContentPane(pane);
         setVisible(true);
         //Adds Listener to buttons
         calculateButton.addActionListener(this);
         clearButton.addActionListener(this);
         exitButton.addActionListener(this);
         mortgageTerm.addActionListener(this);
         interestRate.addActionListener(this);
    public void actionPerformed(ActionEvent event) { 
         Object command = event.getSource();
         JComboBox mortgageTerm = (JComboBox)event.getSource();
         String termYear = (String)mortgageTerm.getSelectedItem();
    if (command == calculateButton) //calculates mortgage payment
         int year = Integer.parseInt(mortgageTerm.getText());
         double rate = new Double(interestRate.getText()).doubleValue();
         double mortgage = new Double(mortgageAmount.getText()).doubleValue();
         double interest = rate /100.0 / 12.0;
         double monthly = mortgage *(interest/(1-Math.pow(interest+1,-12.0 * year)));
                   NumberFormat myCurrencyFormatter;
                   myCurrencyFormatter = NumberFormat.getCurrencyInstance(Locale.US);
                   monthlyPayment.setText(myCurrencyFormatter.format(monthly));
         if(command == clearButton) //clears all text fields
                   mortgageAmount.setText(null);
                   //mortgageTerm.setText(null);
                   //interestRate.setText(null);
                   monthlyPayment.setText(null);
              if(command == exitButton) //sets exit button
                        System.exit(0);
         public static void main(String[] arguments) {
              MortgageCalculator mor = new MortgageCalculator();

    The OP already did this to both JComboBoxes.
    mochatay, here is a new actionPerformed method for you to use.
    I've improved a few things here and there...
    1) You can't just cast the ActionEvent's source into a JComboBox!
    What if it was a JButton that fired the event? Then you would get ClassCastExceptions (I'm sure you did)
    So check for all options, what the source of the ActionEvent actually was...
    2) You can't assume the user will always type in valid data.
    So enclose the Integer and Double parse methods in try-catch brakcets.
    Then you can do something when you know that the user has entered invalid input
    (like tell him/her what a clumsy idiot they are !)
    3) As soon as user presses an item in any JComboBox, just re-calculate.
    I did this here by programmatically clicking the 'Calculate' button.
    Alternatively, you could have a 'calculate' method, which does everything inside the
    if(command==calculateButton) if-block.
    This will be called when:
    a)calculateButton is pressed
    b)when either of the JComboBoxes are pressed.
    public void actionPerformed (ActionEvent event)
            Object command = event.getSource ();
            if (command == calculateButton) //calculates mortgage payment
                int year = 0;
                double rate = 0;
                double mortgage = 0;
                double interest = 0;
                /* If user has input invalid data, tell him so
                and return (Exit from this method back to where we were before */
                try
                    year = Integer.parseInt (mortgageTerm.getSelectedItem ().toString ());
                    rate = new Double (interestRate.getSelectedItem ().toString ()).doubleValue ();
                    mortgage = new Double (mortgageAmount.getText ()).doubleValue ();
                    interest = rate / 100.0 / 12.0;
                catch (NumberFormatException nfe)
                    /* Display a message Dialogue box with a message */
                    JOptionPane.showMessageDialog (this, "Error! Invalid input!");
                    return;
                double monthly = mortgage * (interest / (1 - Math.pow (interest + 1, -12.0 * year)));
                NumberFormat myCurrencyFormatter;
                myCurrencyFormatter = NumberFormat.getCurrencyInstance (Locale.US);
                monthlyPayment.setText (myCurrencyFormatter.format (monthly));
            else if (command == clearButton) //clears all text fields
                /* Better than setting it to null (I think) */
                mortgageAmount.setText ("");
                //mortgageTerm.setText(null);
                //interestRate.setText(null);
                monthlyPayment.setText ("");
            else if (command == exitButton) //sets exit button
                System.exit (0);
            else if (command == mortgageTerm)
                /* Programmatically 'clicks' the button,
                As is user had clicked it */
                calculateButton.doClick ();
            else if (command == interestRate)
                calculateButton.doClick ();
            //JComboBox mortgageTerm = (JComboBox) event.getSource ();
            //String termYear = (String) mortgageTerm.getSelectedItem ();
        }Hope this solves your problems.
    I also hope you'll be able to learn from what I've indicated, so you can use similar things yourself
    in future!
    Regards,
    lutha

  • Can't remove event listener from Image

    I'm clearly missing something and would appreciate some help.  I'm trying to run an event handler when an Image completes loading,  then remove the handler so that it won't  run again should the image be reloaded later.
    The problem that I'm having is that the event handler simply wont' go away, despite calling removeEventListener on the Image object.
    The following example demonstrates the problem (the example doesn't actually do anything useful...it's just the shortest example to demonstrate the problem).  (To run the  app, you'll have to provide any ol' JPEG file named "myImage.jpg" in the "src" directory of your project).
    What I expect to happen is :
         1) on startup, the image loads and loadComplete() runs.
         2)  loadComplete removes the event Listener so that subsequent re-loads won't re-fire the handler.  I only want the handler to  run once.
         3) "loadComplete" shoudl  be displayed in the Debug console.
         4) A button click should display only "Changing  Image" in the Debug console
    What I get instead is that the loadComplete handler isn't  removed, and every  time I click the button, loadComplete runs when the image is re-loaded   (i.e., every button click results in both "Change Image" AND "loadComplete"  being displayed in the Debug console).
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
        <mx:Image width="655" height="181" source="myImage.jpg" id="myImage" autoLoad="true" scaleContent="true" complete="loadComplete()" x="100" y="100"/>
        <mx:Button x="100" y="341" label="Button" click="click(event)"/>
        <mx:Script>
            <![CDATA[
                private function loadComplete():void
                    trace ("loadComplete");
                    myImage.removeEventListener("complete", loadComplete);
                private function click(evt:Event):void
                    trace ("Changing Image");
                    myImage.load("myImage.jpg");    //  Reload same image; it's just an example
            ]]>
        </mx:Script>
    </mx:Application>

    Hi,
    You can remove only event listeners that you added with the addEventListener() method in an ActionScript block. You cannot remove an event listener  that was defined in the MXML tag, even if it was registered using a call  to the addEventListener()method that was made inside a tag attribute.
    Check this page for reference.
    http://livedocs.adobe.com/flex/3/html/help.html?content=events_05.html
    You can modify the code a bit a get it working
    <mx:Image width="655" height="181" id="myImage" scaleContent="true"
              x="100" y="100"
              creationComplete="myImage_creationCompleteHandler(event)"/>
    private function myImage_creationCompleteHandler(event:FlexEvent):void
         myImage.addEventListener("complete",myImage_completeHandler);
         myImage.load("myImage.jpg");
    private function myImage_completeHandler(event:Event):void
         myImage.removeEventListener("complete",myImage_completeHandler);

  • How can I check if a function is or is not called from the event listener? in Flash CS4 (AS3)

    Hi,
    I came across a little problem.
    I put an event listener inside a for loop and the for loop inside a function.
    I want the for loop to end as soon as the event listener inside the for loop calls its function.
    Here is the general code for a better picture.
    Code:
    this.addEventListener(Event.ENTER_FRAME, function#1);
    function function#1(event:Event):void{
              if(something is true){
                        for(var i = 0; i < numOfmy_mcs; i++){
                                  this["my_mc_"+String(i)].addEventListener(MouseEvent.CLICK, function#2);
    function function#2(e:Event):void{
    //do something cool here
    Thank you for any help!

    kglad wrote:
    that for-loop (if it executes), defines listeners for interactive objects.  that will complete long before any object is clicked.
    Well yes but it does it again and again (frames per second times seconds = number of times it goes through the code if i'm not mistaken), because it is inside a function, and through testing i found out that it works like this:
    Example:
    there are 5 my_mc's in my project: (my_mc_0, my_mc_1, my_mc_2, my_mc_3, my_mc_4)
    if i click my_mc_0 function#2 is called and executed. BUT only after the loop finishes (i know this from tons of testing)...which is unnecessary since you cannot click two places at once. This might not be a problem in this example because i am only using 5 my_mc's buy if i use 500000000 my_mc's it would make a lot of difference.
    is there a way to stop the loop if the function is called?
    ...maybe there is a better way to write it, the only alternative i know that works is if i manually write every single listener and this also is logical in this example but as i said next to impossible if the numbers get bigger.
    -Note
    I didn't specify this earlier but function#2 makes the if statement false so it wont jump back into it.
    Thank you for the help I really appreciate it!
    3rd edit...don't know what's wrong with me

  • Remove event listener from loaded external swf

    I have a main movie timeline that loads an external swf. When I unload the swf from the main timeline I get an error from this:  my_FLVPlybk.addEventListener(VideoEvent.COMPLETE, vidEnd);
    is there any way to remove the event listener from the loaded swf from the main timeline?
    THANKS!

    if you're publishing for fp 10+, use unloadAndStop() applied to your swf's loader.  that has a fair chance of solving the problem.
    if that fails, you should explicitly stop my_FLVPlybk.

  • Is there any event listener for changing the selection of layer?

    Hi all,
    I am looking into an event listener which fires on changing the selection of layer. I found 'Select' event listener which fires on selecting the different object.
    Actually the problem with Select event listener is that when we select an object and move it and deselect it by clicking on the document, event fires on the selection of that object. But if we again select the same object and move it, no event is fired at that time.
    Is there any workaround of this? So that the event is fired every time when we select the same object.
    Please help me on this..
    Regards,
    VG.

    Thanks for the reply..
    Actually I want the same behaviour as in illustrator i.e
    - Select a layer. (Notifier calls the listener)
    - Move it.
    - Click on the document.
    - Again select the same layer. (Notifier calls the listener again)
    - Move it.
    But in photoshop,
    - Select a layer. (Notifier calls the listener)
    - Move it.
    - Click on the document.
    - Again select the same layer. (Notifier doesnot calls the listener again as the layer is already selected in panel as you explained.)
    - Move it.
    Is there any way to get the same behaviour of illustrator in photoshop?

  • Event Listening With Correlation

    Hi.
    I am seeking the better solution for listening to an event based in information that each BPEL process instance stores internally.
    To each BPEL instance is passed a correlation ID, that is not unique among several BPEL instances. I want to cancel the corresponding BPEL instances if a termination event is published in EDN referring the same correlation ID. The BPEL instances waits for the termination events in a pick activity.
    I have tried 2 solutions:
    1- Filter expression on the event listening on the onMessage branch- The problem is that i cannot acess internal instance data (id that was passed to the instance on the initiate message) to place on the expression. I can build the expression only based on the event data. Makes sense since this test is maybe taking place on the EDN.
    2- Correlation Set on the event listening. The problem is that i get a "receive conflict" since the correlation set is not unique among the instances.
    The workaround was to receive the event in all instances and test the correlation ID subsequently in an "if activity". If the correlation ID is not "mine" i have to listen again. I have to put pick activity inside a while.
    Anybody has faced this requirement?
    Can someone help me with a more elegant solution?
    Thank you very much.
    Bruno Silva

    I think you should use a midware, like CORBA. If your applications are simulations, use pRTI and study some High Level Architecture before. Then your applications can communicate through the midware. This is for programs written on different platforms. Will take you some time..

  • Simple Event being Displayed Multiple Times

    I have a simple event from the past that is being displayed multiple times. There are no other UIDs that are the same in iCal and no other event has the same SUMMARY name.
    This particular event shows up 9 times. I can also reproduce the result from Automator by searching the specific calendar and looking for events in the date range.
    The event is as follows:
    BEGIN:VCALENDAR
    VERSION:2.0
    PRODID:-//Apple Inc.//iCal 3.0//EN
    CALSCALE:GREGORIAN
    BEGIN:VEVENT
    SEQUENCE:5
    TRANSP:OPAQUE
    UID:EC6F5DBC-9BCC-4007-87F2-4A9C796C8551
    DTSTART:20070330T000000
    DTSTAMP:20071206T205550Z
    SUMMARY:Babysit Paul
    CREATED:20080919T173959Z
    DTEND:20070401T120000
    END:VEVENT
    END:VCALENDAR
    I am not very familiar with the format but it looks pretty straight forward.
    The calendar is being synched via Mobile Me and is shared by another two computers. Not sure why this should be relevant since the entry on the computer and on Mobile Me both show this duplication of the event.
    The reason I was looking at all was because of the hangs in iCal since I set the sync to automatic.
    Any ideas welcome,
    Richard

    Post Author: foghat
    CA Forum: Data Connectivity and SQL
    If all the records you are displaying in your report
    truly are duplicated, you could try check off 'select distinct records'
    from the File --> Report Options menu.  While this may solve the problem for you, it would be worthwhile to determine if you are actually joining your tables correctly.
    likely the records aren't an exact duplicate and the problem is with your join criteria.  To verify this you can:  start by removing table b from the database expert altogether.  does
    that solve your problem of multiple rows?  If it does, you are not joining to table b correctlyIf you still have
    multiple rows, loan_id on its own must not make a record unique.  Is
    loan_id duplicated in either of your tables?  Just because loan_id is a
    primary key does not necessarily mean it is unique - often a record
    will have 2 or more primary keys and only when all primary keys are
    used is the record unique.   If you display all of the columns
    from both tables, you will hopefully see some (maybe just one) columns
    where the value is different between your seemingly duplicate data.
    You may need to join on this value as well.as for the type of join you are using (inner, not enforced) you should be fine. Good luck

Maybe you are looking for