FocusLost event on same component generated multiple times... why?

This is a reiteration of the topic of a post from Jan. 2006 by Toxter.
Although Toxter got his problem resolved, the question of the title of his post (same as mine) was never answered.
Suppose you want to validate text of a component (say, a JTextField) by checking the text when the component loses focus, by implementing the focusLost method in a FocusListener. The listener catches focusLost events from the given component and does validation and if found invalid, opens a warning dialog (say, a JOptionPane). Suppose further that in your implementation of the focusLost method, after returning from the JOptionPane call, you call requestFocusInWindow() on the JTextField so the user can make the correction straight-away. What happens, weirdly, is that you get multiple recurrences of a focusLost event from the very same textfield component, generating multiple JOptionPane popups, before the user is actually able to access the textfield and make a correction.
No reason was given as to why this happens. Toxter reported that focusLost would get called twice. I routinely get 3 occurrences.
In any case, why does this happen?
There are at least a couple of other workarounds besides the one accepted by Toxter:
1) you can drop the call to textField.requestFocusInWindow... without that call you don't get multiple occurrences of focusLost FocusEvents
2) you can wrap the call to requestFocusInWindow in a call to SwingUtilities.invokeLater (within the run method of an anonymous Runnable):
     if( !validatePositiveIntegerField(txtFld) )
         JOptionPane.showMessageDialog(this, INPUT_ERR_MSG,
                  INVALID_ENTRY_TITLE, JOptionPane.WARNING_MESSAGE);
         SwingUtilities.invokeLater(new Runnable()
            public void run()
               txtFld.requestFocusInWindow();
      }Workarounds are great but it's nice to understand the underlying causes of problems too... If anyone (Toxter, do you know?) can give even just a brief nutshell explanation as to why this occurs, I'd like to hear it.
Thanks in advance.

Use an InputVerifier:
http://forum.java.sun.com/thread.jspa?forumID=57&threa
dID=776107&start=6Thanks for the reply, camickr. Several workarounds were already noted. That wasn't the question. The question was: what is the underlying cause of the multiple occurrences of focusLost events from the given JTextField which cause the JOptionPane to pop up multiple times? On the face of it, it seems to be a bug in how focus events are getting generated. Here is a bit of code that will generate the problem:
   public void focusLost(FocusEvent e)
      if( e.getSource() == txtFld && !validatePositiveIntegerField(txtFld) )
         JOptionPane.showMessageDialog(this, INPUT_ERR_MSG, INVALID_ENTRY_TITLE,
                                       JOptionPane.WARNING_MESSAGE);
         txtFld.requestFocusInWindow();
   }In my previous post, I pointed out that the multiple focusLost events can be avoided if one either drops the call to txtFld.requestFocusInWindow() altogether, or else wraps that call in the run method of a Runnable executed with SwingUtilities.invokeLater. But the question I posed was, why is the code above causing multiple occurrences of focusLost events from the txtFld component?
Any help in getting an explanation of that seemingly buggy behavior would be appreciated.
Cheers

Similar Messages

  • Firefox making same GET call multiple times

    Firefox is making the same AJAX call multiple times for a single event when it should really do it once. Actually, with each single click the number of calls multiplies. I have tested the application using Chromium and Eclipse's internal browser and I have no problems.
    I removed all add-ons and started Firefox in safe-mode, but the problem persists.
    Please advise,
    Arthur Nobrega

    Hi Arthur, do you have a page available that demonstrates this problem? If so, please post a link. Perhaps your test doesn't actually need to make a network request: for example, perhaps it could add a message to the page indicating that the relevant section of code was triggered.
    Since this site focuses on end user support, you might also consider taking this question to a more developer-oriented forum such as the unofficial [http://forums.mozillazine.org/viewforum.php?f=25 mozillaZine Web Development board], or to StackExchange.

  • Bapi_po_create1 is giving same system messages  multiple time in the joblog

    Hi Experts,
    Bapi_po_create1 is giving same system messages multiple times in the job log when we ran the program in the background
    can u plz suggest how to prevent these multiple appearances of same messages.
    I am pasting the code below whn i ran this program in backgorund job log is having the messages.
    Date       Time     Message text                                                                 Message class Message no. Message type
    08/06/2009 08:11:53 Job started                                                                       00           516          S
    08/06/2009 08:11:53 Step 001 started (program ZZZTEST, variant &0000000000008, user ID BREDDY)        00           550          S
    08/06/2009 08:11:54 Commitment plan contains no account assignment data                              MECP          020          S
    08/06/2009 08:11:54 Commitment plan contains no account assignment data                              MECP          020          S
    08/06/2009 08:11:54 Status "Initial Block" of material 20111 does not allow external procurement      ME           053          E
    08/06/2009 08:11:54 Status "Initial Block" of material 20111 does not allow external procurement      ME           053          E
    08/06/2009 08:11:54 Source not included in list despite source list requirement                       06           722          E
    08/06/2009 08:11:55 Pricing/euro: Attention: Euro Customizing not maintained                          VH           777          S
    08/06/2009 08:11:55 Pricing/euro: Attention: Euro Customizing not maintained                          VH           777          S
    08/06/2009 08:11:55 Status "Initial Block" of material 20111 does not allow external procurement      ME           053          E
    08/06/2009 08:11:55 Purchase order still contains faulty items                                       MEPO          000          E
    08/06/2009 08:11:55 Job finished                                                                      00           517          S
    Edited by: bhavani prasad kotharu on Aug 6, 2009 3:09 PM

    HERE IS THE CODE OF THE PROGRAM, WE R JUST PASSING SOME PO DATA TO THE BAPI_PO_CREATE1,ON RUNNING THIS PROGRAM IN BACKGROUND SAME SYSTEM MESSAGES ARE APPEARED MULTIPLE TIMES,----
    REPORT zzztest.
    DATA :    lwa_bapimepoheader TYPE bapimepoheader
             ,lwa_bapimepoheaderx TYPE bapimepoheaderx
             ,li_bapimepoitem TYPE STANDARD TABLE OF bapimepoitem
             ,lwa_bapimepoitem TYPE  bapimepoitem
             ,li_bapimepoitemx TYPE STANDARD TABLE OF bapimepoitemx
             ,lwa_bapimepoitemx TYPE bapimepoitemx
             ,li_conditions TYPE STANDARD TABLE OF komv
             ,li_return TYPE STANDARD TABLE OF bapiret2
             , n TYPE c
    PARAMETERS: p1 TYPE c AS CHECKBOX.
    IF p1 = 'X'.
      lwa_bapimepoheader-doc_type = 'NB'.
      lwa_bapimepoheader-purch_org = 'NA00'.
      lwa_bapimepoheader-pur_group = 'C02'.
      lwa_bapimepoheaderx-doc_type = 'X'.
      lwa_bapimepoheaderx-purch_org = 'X'.
      lwa_bapimepoheaderx-pur_group = 'X'.
      lwa_bapimepoitem-po_item = '10'.
      lwa_bapimepoitem-material = '000000000000020111'.
      lwa_bapimepoitem-plant = 'CA01'.
      lwa_bapimepoitem-vend_mat = '1000'.
      lwa_bapimepoitem-quantity = '10'.
      lwa_bapimepoitem-orderpr_un = 'M'.
      lwa_bapimepoitem-no_more_gr = 'K'.
      lwa_bapimepoitem-agreement = '4600000095'.
      lwa_bapimepoitem-agmt_item = '10'.
      lwa_bapimepoitem-pricedate = 'X'.
      lwa_bapimepoitem-price_date = '20071030'.
      lwa_bapimepoitem-no_rounding = 'X'.
      APPEND lwa_bapimepoitem TO li_bapimepoitem.
      lwa_bapimepoitemx-po_item = '10'.
      lwa_bapimepoitemx-po_itemx = 'X'.
      lwa_bapimepoitemx-po_itemx = 'X'.
      lwa_bapimepoitemx-material = 'X'.
      lwa_bapimepoitemx-plant = 'X'.
      lwa_bapimepoitemx-quantity = 'X'.
      lwa_bapimepoitemx-po_unit = 'X'.
      lwa_bapimepoitemx-orderpr_un = 'X'.
      lwa_bapimepoitemx-acctasscat = 'X'.
      lwa_bapimepoitemx-agreement = 'X'.
      lwa_bapimepoitemx-agmt_item = 'X'.
      lwa_bapimepoitemx-pricedate = 'X'.
      lwa_bapimepoitemx-price_date = 'X'.
      lwa_bapimepoitemx-preq_no = 'X'.
      lwa_bapimepoitemx-preq_item = 'X'.
      lwa_bapimepoitemx-no_rounding = 'X'.
      APPEND lwa_bapimepoitemx TO li_bapimepoitemx.
    DATA: lo_msg_handler  TYPE REF TO cl_message_handler_mm.
      CALL METHOD cl_message_handler_mm=>get_handler
        IMPORTING
          ex_handler = lo_msg_handler.
      lo_msg_handler->remove_all( ).
      lo_msg_handler->cleanup( ).
      CALL FUNCTION 'BAPI_PO_CREATE1' "in background task
           EXPORTING
             poheader   = lwa_bapimepoheader
             poheaderx  = lwa_bapimepoheaderx
             testrun    = 'X'
           NO_MESSAGING = c_x
           NO_MESSAGE_REQ = c_x
             no_authority = 'X'
           IMPORTING
             expheader  = lwa_bapimepoheader
           TABLES
             return     = li_return
             poitem     = li_bapimepoitem
             poitemx    = li_bapimepoitemx
             conditions = li_conditions.
    ENDIF.
    Edited by: bhavani prasad kotharu on Aug 6, 2009 3:38 PM

  • TS2755 keep receiving the same text message multiple times, at the same time of the night. How can I stop this?Thabnks

    Hi
    I keep on receiving the same text message multiple times and at around the same time each night. Any idea how I can stop this happening? The text messages are originating from to separate Saudi Arabian mobile numbers. Both these people are listed in my contacts so do you think if I delete their names it might stop the texts coming htrough each night?
    Cheers

    Deleting the people from your contacts will not stop the messages. Have you tried talking to the people and finding out if they're sending you messages? You could try contacting your carrier and finding out what blocking services they offer. However, theat would block all messages from those people.

  • Re: Running the same (Forte) application multiple times -for different

    Hi
    We had the same problem - how to deploy a number of identical applications, using each their own db.
    (for training).
    The solution we used is to wrap the entire application into different applications by using a very small
    module called KURSUS01, KURSUS02 etc, that did nothing but call the start procedure of the main app.
    Then in the dbsession connect, we made a call appname to get the application name, and appended the
    first 8 chars to the dbname. Thus our dbnames now points to logicals name: rdbdataKURSUS01, rdbdataKURSUS02 etc.
    All this allows us to deploy the identical apps in the same env, or change one version, and run both the old
    and new program on the same pc and server at the same time (eg. KURSUS01 and KURSUS02).
    I also think this is a kludge - but it works nicely!
    Jens Chr
    KAD/Denmark
    -----Original Message-----
    From: Haben, Dirk <[email protected]>
    To: 'Soapbox Forte Users' <[email protected]>
    Date: 15. januar 1999 09:41
    Subject: Running the same (Forte) application multiple times - for different business clients.
    Hi All
    We have a number of different business clients all willing to use our
    application.
    The (forte) application is to run on our machines etc for these (business)
    clients.
    All (business) clients will have their data kept in separate Oracle DBs
    (instance).
    The problem now is that the entire (forte) application is written using
    DBSessions.
    Now, depending on what business client needs to be serviced (so to speak) we
    need to attach to the right DB - or use the "right" SO.
    The two options we can think of are:
    Option1:
    Programatic change to somehow "know" what (business) client (DB) I'm talking
    about and then use the right DB.
    Pro:
    Only one forte environment to maintain
    Can run multiple (business) clients on same PC at the same time
    Con:
    Requires many program changes
    bending O-O rules(?)
    can't dynamically name SOs so can it be done at all? (ResourceMGRs maybe?)
    Option2:
    Use separate environments! One for each business client.
    Pro:
    More defined separation of app and data,
    SLA-easy
    Con:
    Maintain "n" number of environments
    Can only run the application for one environment (business client) at a time
    on one PC - Big Negative here!
    Not knowing any feasible solution to option 1 (without much code changes and
    developer moaning) I would go for option two; as I have already worked on
    multi-environment setups on VMS back at the Hydro (hi guys).
    I would appreciate any comments from anyone who has solved this problem.
    How, Why Pro Con etc.
    TIA,
    Dirk Haben
    Perth, WA
    To unsubscribe, email '[email protected]' with
    'unsubscribe forte-users' as the body of the message.
    Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/>
    To unsubscribe, email '[email protected]' with
    'unsubscribe forte-users' as the body of the message.
    Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/>

    Hi
    We had the same problem - how to deploy a number of identical applications, using each their own db.
    (for training).
    The solution we used is to wrap the entire application into different applications by using a very small
    module called KURSUS01, KURSUS02 etc, that did nothing but call the start procedure of the main app.
    Then in the dbsession connect, we made a call appname to get the application name, and appended the
    first 8 chars to the dbname. Thus our dbnames now points to logicals name: rdbdataKURSUS01, rdbdataKURSUS02 etc.
    All this allows us to deploy the identical apps in the same env, or change one version, and run both the old
    and new program on the same pc and server at the same time (eg. KURSUS01 and KURSUS02).
    I also think this is a kludge - but it works nicely!
    Jens Chr
    KAD/Denmark
    -----Original Message-----
    From: Haben, Dirk <[email protected]>
    To: 'Soapbox Forte Users' <[email protected]>
    Date: 15. januar 1999 09:41
    Subject: Running the same (Forte) application multiple times - for different business clients.
    Hi All
    We have a number of different business clients all willing to use our
    application.
    The (forte) application is to run on our machines etc for these (business)
    clients.
    All (business) clients will have their data kept in separate Oracle DBs
    (instance).
    The problem now is that the entire (forte) application is written using
    DBSessions.
    Now, depending on what business client needs to be serviced (so to speak) we
    need to attach to the right DB - or use the "right" SO.
    The two options we can think of are:
    Option1:
    Programatic change to somehow "know" what (business) client (DB) I'm talking
    about and then use the right DB.
    Pro:
    Only one forte environment to maintain
    Can run multiple (business) clients on same PC at the same time
    Con:
    Requires many program changes
    bending O-O rules(?)
    can't dynamically name SOs so can it be done at all? (ResourceMGRs maybe?)
    Option2:
    Use separate environments! One for each business client.
    Pro:
    More defined separation of app and data,
    SLA-easy
    Con:
    Maintain "n" number of environments
    Can only run the application for one environment (business client) at a time
    on one PC - Big Negative here!
    Not knowing any feasible solution to option 1 (without much code changes and
    developer moaning) I would go for option two; as I have already worked on
    multi-environment setups on VMS back at the Hydro (hi guys).
    I would appreciate any comments from anyone who has solved this problem.
    How, Why Pro Con etc.
    TIA,
    Dirk Haben
    Perth, WA
    To unsubscribe, email '[email protected]' with
    'unsubscribe forte-users' as the body of the message.
    Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/>
    To unsubscribe, email '[email protected]' with
    'unsubscribe forte-users' as the body of the message.
    Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/>

  • Can I have the same printer installed multiple times under different names?

    On WIndows I have the same printer installed multiple times
    All using the same driver
    I have a Canon printer that has a rear tray and a bottom tray
    So, I will have one printer that prints to the rear and the other to the bottom
    Other printers (the same one) will be set so that they print in high quality and in duplex for example
    I'll name the printers 1.Canon 2.Canon 3.Canon etc
    So, when I go to print, I just hit a number on the keyboard and the printer I want is selected
    Can I do the same on my laptop?
    Thanks
    Omar

    Back Up - that's in case things go wrong.
    In the case you cite:
    You have
    Mother
    Mother Maiden Name
    as Faces, right?
    In the Corkboard view click on Mother Maiden Name and delete the 'Maiden Name'.
    It will disappear and all the photos will be in the Mother face.
    Note that 'Mother' and 'Mother ' (that is, with a trailing space) are not the same.
    You can  also just edit the name 'Mother Maiden Name' to 'Mother'
    As for photos staying in manual sort, I can only say that mine do. But as I've no idea what troubleshooting steps you've used.
    Regards
    TD

  • IPhone keeps sending the same text message multiple times in a row.

    My iphone (4s) keeps sending people the same text message multiple times (2-4) a few seconds inbetween.  Sometimes it will tell me that there the message failed, but they still recieve it multiple times.  I've already tried deleting the message tread and reset network settings.  Nobody who has an iphone has said anything to me about it yet, only people with android.  

    It's a carrier issue. I have AT&T and had this issue with my friend (who had an Android) and my mother (who had a feature phone). Both of them have Verizon for service and I'm thinking the issue was on Verizon's end. They both just dealt with it as we tried all sorts of things to get this sorted out (other than contacting Verizon directly) and had no luck.
    They've both switched to iPhones so it's a moot point for us now, at least.
    ~Lyssa

  • I have elements 8 and I want to be able to load the same picture in multiple times because

    Question - I have photoshop elements 8 and I want to be able to load the same picture in multiple times because I have 1200 pictures already pregrouped into 60 file categories and some pictures are duplicated thruout these files. How can I get elements 8 to load the duplicates  - it currently seems to default to only loading the picture one time and not allowing duplicates

    The apple lightning to 30 pin works just fine for me.
    Works with a fio amp and srs  iwow.

  • HT2486 How can you put same contact in a Group multiple times so that you can print the same mailing label multiple times?

    How can you put same contact in a Group multiple times so that you can print the same mailing label multiple times?

    Hello,
    Avery...
    https://discussions.apple.com/thread/2588943?start=0&tstart=0
    Or...
    http://www.belightsoft.com/products/labelsaddresses/overview.php

  • Droid X - Receiving same Txt message multiple times, repeatedly

    After an upgrade back in September/October...  I started receiving the same text message multiple times.  It doesn't happen every time.  For example, my Husband responds with "OK" and I receive the same message 5 times over a period of 4-5 hours. 

    Welcome ...  SEARCH is your friend in this forum as most issues have already been reported.  I did a quick search on "Multiple" and this popped up:
    http://community.vzw.com/t5/DROID-X-by-Motorola/Receiving-multiple-duplicate-text-messages-since-latest-update/m-p/685893#M31790
    There may be others as well. 

  • Deploying same WAR file multiple times

    I am attempting to deploy the same WAR file with different parameters [Differnt
    data sources, etc.] Has anyone deployed the exact same war file multiple times?
    I know one way to do this is to rename the war file, is there a way other than
    this without EAR it up?

    you edit your html file to embed multiple copies of your swf.
    it's generally easier to control the layout if you use swfobject (but you can just copy the code published by flash pro) to embed the swf.

  • Embed same SWF file multiple times in Flash file

    I want to include the same SWF file multiple times in the same flash file. I have a plain box that is clear, that becomes visible when clicked. I want to create a grid of them (about 50+). If I copy the layers and actions, they interfere with each other so I want to embed multiple SWF files into one file and then save it to embed in an interactive PDF. If I save one square and embed it into the PDF multiple times, the file becomes too big to work. How can I embed interactive SWF files over and over into 1 SWF file? I don't have a ton of knowledge with Flash....

    you edit your html file to embed multiple copies of your swf.
    it's generally easier to control the layout if you use swfobject (but you can just copy the code published by flash pro) to embed the swf.

  • Inconsistency in document flow, same DMR appearing multiple times

    experts,
    While running  transaction VA43 for document flow same  resource related dmr appearing multiple times.
    Please help why this same dmr is getting displayed multiple times.
    Edited by: ronny1984 on Jun 30, 2009 2:40 PM

    Note 1049482 is valid for the following releases:
    Release Package name
    500 SAPKH50018
    600 SAPKH60011
    602 SAPKH60201
    You can check your support pack level from transaction SPAM or by clicking on:
    System -> Status. From here there is a button called "component information" in the SAP System data section. This will show you the different support pack levels. If your support pack is less than SAPKH60011 (for example SAPKH60008) then the note is applicable. "
    thanks
    G. Lakshmipathi

  • How can I have use the same div ID multiple times on the same page?

    Okay so a problem I encounter a lot is that often times I want to use the same div ID several times on the same page. An example of this is when I'm creating table like designs.
    Let's say for instance I create a div ID called 'product-container'. I want to use 'product-container' multiple times on the same page but if I do this it is improper XHTML and will throw errors in any XHTML validator (you are only allowed to use a div ID once on any XHTML page in order for it to be standards compliant).
    Now the first option is that I could define 'product-container' in my CSS style sheet multiple times by doing something like this...
    #product-container {
         width: 300px;
    #product-container-2 {
         width: 300px;
    #product-container-3 {
         width: 300px;
    #product-container-4 {
         width: 300px;
    What you will see there however is that it seems pointless to define the same ID numerous times over (just adding a number on the end) when each ID is the exact same thing and has the exact same attributes.
    Now what I have noticed is that there are some sites out there who manage to have the same ID appear several times in the code but add a number to it just like above. The difference is that they only have one definition for 'product-cointainer' in their CSS document but in their actual XHTML code they have IDs for 'product-container' but with numbers on the end like 2,3,4,5, etc. It's almost as if JavaScript or some other code is automatically appending a number on the end of the ID so the validator won't consider the markup to be invalid, but yet it knows that it's using the same 'product-container' style that is contained in the CSS style sheet.
    I hope I explained this correctly. I'm just hoping to find a way that I can put the same div ID on a page multiple times without having to define it over and over again in my CSS.
    Any help is much appreciated!

    Because it seems like by using a class you can't make this position as 
    well as you can by using an ID. Am I wrong?
    An ID name can be used only one time per page.  A class name can be used multiple times per page.
    .product {
    width: 300px;
    text-align:left;
    color: #FF0000
    border: 2px solid #666;
    Nancy O.
    Alt-Web Design & Publishing
    Web | Graphics | Print | Media  Specialists
    www.alt-web.com/
    www.twitter.com/altweb
    www.alt-web.blogspot.com

  • How to run the same SSRS report multiple times, each time with a different parameter value?

    Hi,
    I have an SSRS report that produces a list of invoices for a single supplier (so supplier is a parameter specified at runtime). The report is based on a stored procedure in SQL. I would like to make things easier and instead of going through all suppliers
    one by one, I want to have a single action, which produces separate reports, per supplier, for all suppliers that have an outstanding invoice (so not all suppliers on the system as a whole but all suppliers that are within the result set of the stored procedure).
    I assume this would mean first executing the stored procedure to find all suppliers that have invoices at the time. And then running the report multiple times, once for each supplier, where the supplier value is used as the parameter every time. ideally
    this would open separate webpages with a single report per page. (I am creating a button in another software, which is simply launching iexplore.exe and passing a
    fixed SSRS report URL).
    What would be required? I have SQL 2012 and I am building this in Report Builder 3.0.
    Thank you!
    Dimitar
    P.S. What about still running ONE report, but every supplier starting on a new page? Is that more realistic? So supplier will not be a parameter any more, but just something that creates a new page on the report?

    What
    about still running ONE report, but every supplier starting on a new page? Is that more realistic? So supplier will not be a parameter any more, but just something that creates a new page on the report?
    Yes thats a much better option. Its very easy to generate such a report in SSRS. You dont need a parameter
    in that case but just needs to add Supplier as a grouping field in the tablix. Then add other columns and groups if required. Select option set page break after each instance of the group for first grouping (ie based on supplier field). Then report will render
    with one page per supplier. On exporting to excel also each supplier data goes to a different tab
    Here's a similar requirement I did for one of my projects
    http://visakhm.blogspot.in/2013/10/using-ssrs-to-export-sqlserver-data-to.html
    Please Mark This As Answer if it solved your issue
    Please Vote This As Helpful if it helps to solve your issue
    Visakh
    My Wiki User Page
    My MSDN Page
    My Personal Blog
    My Facebook Page

Maybe you are looking for