Problem with doClick(int i) inside a while loop.

I'm doing a boring "watch and repeat" game. I have 9 JButtons. I want the computer to randomly click on those buttons and the player have to repeat the numbers in the correct order.
My problem is when the computer is showing which buttons to press. My code looks like this (sorry about the formatting):
ActionListener aL = new ActionListener() {
public void actionPerformed(ActionEvent e){
if(e.getSource()==start){
while (something something){
switch(here is a random number between 1 and 9){
case 1: j1.doClick(900); //j1 is a JButton
My problem is that the doClick doesn't release the button during the whole loop. If it loops 5 times, then all the pressed buttons will remain pressed down for as long as the loop is running. I've tried to call repaint, but it doesn't work. All buttons remains pressed even though they should go back to normal after 0,9 seconds.
I don't think the ActionListener should cause any problem. And neither does the switch. It seems like the application simple won't repaint itself until the loop is finished.

Ok here is the code to make work what you want. Note that it looks ugly :)
import javax.swing.*;
import java.awt.*;
public class Test extends JFrame implements Runnable {
  private JButton btn1, btn2, btn3;
  public Test() {
    super("Test");
    btn1 = new JButton("1");
    btn2 = new JButton("2");
    btn3 = new JButton("3");
    JPanel p = new JPanel(new FlowLayout());
    p.add(btn1);
    p.add(btn2);
    p.add(btn3);
    getContentPane().add(p, BorderLayout.CENTER);
    pack();
    setVisible(true);
    Thread t = new Thread(this);
    t.start();
  public static void main(String args[]) {
    new Test();
  public void run() {
    //This run method is NOT in the event thread
    while (true) {
      try { Thread.sleep(1000); } catch (InterruptedException e) {}
      SwingUtilities.invokeLater(new Worker(btn1));
      try { Thread.sleep(1000); } catch (InterruptedException e) {}
      SwingUtilities.invokeLater(new Worker(btn2));
      try { Thread.sleep(1000); } catch (InterruptedException e) {}
      SwingUtilities.invokeLater(new Worker(btn3));
  class Worker implements Runnable {
    JButton button = null;
    public Worker(JButton b) {
      button = b;
    public void run() {
      button.doClick(100);
}

Similar Messages

  • SubVi with feedback nodes used more than once inside a While Loop

    All,
    I have a subvi that does a set of operations and uses 3 feedback nodes. I am using this subvi inside a While Loop a total of 4 times. I've noticed that all instances used share the same result at each corresponding feedback node but I would like to have an individual result from each of them. Is there an easy way to go around this problem? I have come up with ways to avoid this: a) create a different vi for each time the subvi was used. b) use global variables instead of feedback nodes. Is there any easier way to go around this issue?
    ExamplePlease note that both subvi's are the same) If on my first subvi I calculate a maximum value and get 1.29 (then goes to feedback node) on my second subvi i get 1.01 my feedback node at the second subvi still registers the maximum value to be 1.29. (and I want it to be 1.01!)
    Hope this is not too confusing, I've been scratching my head with this for a while, can't find the "easy" button. Thanks in advance.
    -Pop
    Im using 9.0.
    Solved!
    Go to Solution.

    Attaching the code would be helpful. Anyway, I am not sure how multiple feedback nodes are supposed to operate so I will defer that to others to answer. As far as being able to use distinct values or instances if you are using a subVI you could mark it as reentrant. That way each call to it will behave as it it were a copy of the VI and it will have its own memory space. This should include the feedback node. You may be ending up with a single subVI and in reality a single feedback node. If you need to pass data between calls than simply wire the data through. You could also use an Action Engine to store and retrieve values. An AE is a MUCH better solution than a global variable.
    Mark Yedinak
    "Does anyone know where the love of God goes when the waves turn the minutes to hours?"
    Wreck of the Edmund Fitzgerald - Gordon Lightfoot

  • I have a for loop inside of while loop.when i press stop for while loop, i also would like to stop for loop.how can i solve this problem?thanks

    i have a for loop inside of while loop.when i press stop for while loop, i also would like to stop for loop.how can i solve this problem?thanks

    Hi fais,
    Following through with what JB suggested. The steps involved in replacing the inner for loop with a while loop are outlined below.
    You can replace the inner for loop with a while by doing the following.
    1) Right-click of the for loop and select "Repalce" then navigate to the "while loop".
    2) Make sure the tunnels you where indexing on with the for loop are still indexing.
    3) Drop an "array size" node on your diagram. Wire the array that determines the number of iterations your for loop executes into this "array size".
    4) Wire the output of the array size into the new while loop.
    5) Set the condition terminal to "stop if true".
    6)Drop an "OR" gate inside the while loop and wire its output to the while loops condition terminal.
    7) C
    reate a local of the boolean "stop" button, and wire it into one of the inputs of your OR gate. This will allow you to stop the inner loop.
    8) Drop a "less than" node inside the inner while loop.
    9) Wire your iteration count into the bottom input of the "less than".
    10) Wire the count (see step 4 above) into the top input of the less than. This will stop the inner loop when ever the inner loop has processed the last element of your array.
    Provided I have not mixed up my tops and bottoms this should accomplish the replacement.
    I will let others explain how to takle this task using the "case solution".
    Ben
    Ben Rayner
    I am currently active on.. MainStream Preppers
    Rayner's Ridge is under construction

  • Unxepected behaviour with clusters inside of while loop with shift register

    Colleagues,
    I just would like to post here small, but important bug (I guess this is the bug), which was found by coworker today morning. Just would like to share knowledge, and probably this will save some debugging time for you...
    So, the problem that you can get wrong content of the cluster in some cases. The cluster used inside of while loop with shift register (we using this construction for functional globals), and after bundle operation you can get data, which are not expected:
    See also attached code for details (LabVIEW 8.6.1, WinXP Prof SP3).
    best regards,
    Andrey.
    PS
    Bug report already sent to NI.
    Message Edited by Andrey Dmitriev on 10-16-2008 12:30 PM
    Attachments:
    BugwithClusters.png ‏15 KB
    BugwithClusters.zip ‏10 KB

    Thanks Andrey for brining this to our attention!
    The "Show Buffer Allocations" reveals that LV is not processing the code in the right order.
    Under ideal conditions, all of the data should be manipulated using the buffer "A". But as this demo shows the data is being processed in the wrong order.
    The previously posted workaround get around this by forcing the array operation to happen first, but this resluts in two additional buffers "C" and "D" and then copy this back into "B".
    Using an "Always Copy" is another workaround that uses a seperate buffer "F" to hold the data being moved from the first cluster to the second inside "E".
    I think you won a shinny new CAR* Andrey!
    Ben
    CAR = Corrective Action Report
    Message Edited by Ben on 10-16-2008 08:05 AM
    Ben Rayner
    I am currently active on.. MainStream Preppers
    Rayner's Ridge is under construction
    Attachments:
    Cluster_Bug.PNG ‏57 KB

  • Hai Matt  I have a problem with download a new app. While I bought iphone5, I take iphone to shopkeeper for download some app and videos that he used his Apple ID . That's t problem now.. Not all the time his ID is appearing but some times hi

    Hai Matt
    I have a problem with download a new app. While I bought iphone5, I take iphone to shopkeeper for download some app and videos that he used his Apple ID . That's t problem now.. Not all the time his ID is appearing but some times his Apple ID is appearing that time I can't download app, videos, songs.. So please guide me to remove that ID or how to solve that..
    Regards
    Babu

    Check Settings/iTunes and AppStore/AppleID and make sure that your AppleID is filled in. If not , sign out and sign in with the correct info.
    To make sure that no other apps or videos are on your device than the one you bought, set it up as new device, explained here: How to back up your data and set up as a new device
    Content that is not bought with your ID can't be used on your phone, that's why his ID and password is asked when you try to use those apps downloaded in the store.

  • How can I vary a PWM´s duty cycle inside a while loop?

    Hi,
    I'm using the "Generate Pulse Train.vi" to generate pwm signals in counters 0 and 1 in order to drive a DC motor both ways.
    The problem is, I need to control the movement of the dc motor with my PI controller which is inside a while loop. I've tried letting the "generate pulse train.vi" outside the while loop, but the problem is, it only changes the value of the duty cycle when the loop is stopped. I also tried putting it inside the loop, but then it doesn't even work.
    So, how can I vary a PWM´s duty cycle inside a while loop?
    I'm attaching the VI with the PI controller.
    Thanks for your help!
    Guilherme
    Attachments:
    controleValvula.vi ‏332 KB

    Here's some code I threw together a while back to change a duty cycle on the fly. It generates a fixed 5KHz or 25KHz frequency depending on laser selection, then allows duty cycle to be changed continously. Maybe you can use the premise of it for your application.
    ~~~~~~~~~~~~~~~~~~~~~~~~~~
    "It’s the questions that drive us.”
    ~~~~~~~~~~~~~~~~~~~~~~~~~~
    Attachments:
    Pulse_Width_Modulator.llb ‏197 KB

  • Open and close visa inside a while loop

    Hi,
    I need to read a position from a control unit device continuously or even by click a button, for this I have to put "visa configure serial port" and" "visa close" inside a while loop. Dose it make any problem?

    You shouldn't need the VISA Event nodes.  Get rid of those.
    Why are you using Concatinate String just to build up a constant.  Just create a single string constant.  It is a lot cleaner.
    Is the antenna constantly sending data to you or only when you request it?
    There are only two ways to tell somebody thanks: Kudos and Marked Solutions
    Unofficial Forum Rules and Guidelines

  • Stopping a while loop inside a while loop

    Hello,
    I have a while loop which is inside a while loop which houses my enetire application, When stopping the inner while loop portions of my outer loop stop working, How do I setup the inner while stop that it will not interfeer with the outer while loop?
    Thanks,
    Gil,

    It sounds like he is using a simple archetecture.  But switching to a different archetecture may not be necessary.  Simply because it doesn't work, doesn't mean scrap the whole thing and start over.  He's got a bug and needs to fix it.  Is it the best archetecture to use, absolutely not, but simple or general archetectures can be effective based on the application.
    Post your VI so we can take a look and give you some pointers and suggestions for improvement.
    Reese, (former CLAD, future CLD)
    Some people call me the Space Cowboy!
    Some call me the gangster of love.
    Some people call me MoReese!
    ...I'm right here baby, right here, right here, right here at home

  • For loop inside  a while loop, what order is that in big o??

    If say I have a for loop inside a while loop, then is that suppose to be in the order of O(n^2) right?? Is there any possibilities to change this into the order of O(n)??

    the other size and the temp size is abstact, which can be defined. This is actually for my union method, my teacher asks me to write this method using the order of O(n) which I think it is not possible. What do you guys think??
    Below is the code I have made:
    public Set<E> union(Set<E> other) {
              int count = 0;
              Iterator<E> iterator1 = other.iterator();
              while (iterator1.hasNext())
                   count++;
              Object[] temp = new Object [data.length+count];
              n = data.length+count;
              for (int i = 0; i<count; i++)
                   temp[i] = data;
              for (int j = count; j<temp.length; j++)
                   temp[j] = iterator1.next();
              data = temp;
              return null;
    but it still has same elements on it and I am thinking of a way on how to remove those same elements

  • Can we place Analog in Read(AI-RE​AD) Vi inside the while loop for high sample rate like 22ks/s?

    I am using E-series Card for data acquisition.My requirement is to sample the channel, and check the 10 samples for certain condition.both at a time.What should be done can we place the AI-READ vi inside for or while loop for this purpose?

    Hello,
    Yes, you can include the AI Read.vi inside the while loop, you would just need to specify the number of scans to read for every iteration of the loop. Then, after AI Read.vi has read the data, you can do what ever kind of manipulation of the data you would like, before the next iteration of the loop. The one thing to watch out for is what ever manipulation of the data you do, be sure that it doesn't take to long whereas the buffer holding the data starts to back up. That can be checked by looking at the scan backlog output of the AI Read.vi, which will tell you how many scans have been acquired but haven't been read into your program.
    Hope this helps!
    Regards,
    Steven B.
    Applications Engineering, NI

  • Looking to implement a timer inside a while loop

    Hi,
    I am trying to program a LabView application where I have a mail 'While' loop for continuous data acquisition. Data is continuously acquired and written to file in each iteration of this loop.
    Upon meeting a certain condition in the data, I plan to implement the start of a timer. However, this timer should not interfere with the normal execution of the while loop. After this timer is complete, I check for a certain second condition and stop my data acquisition.
    I tried using the 'Wait' function, but could not succeed programmatically in avoiding the delay with interfering with the normal functioning of the while loop.
    Could there be a simple workaround?
    Thanks,
    -Dude

    Look at the Time Elapsed express VI (Time & Dialog palette). It allows you to reset a timer and check if the time has passed. If you open it (right click>>Open FP>>Convert), you will see it uses an uninitialized shift register to remember the time it started at. Search the site for that term or LV2 globals to learn more about this technique.
    Try to take over the world!

  • Problem to download i called the support Adobe and after a while he said he had problem with his int

    problem with his internetand shut down the contakt
    After that I can not come in to my adobeconto on my other computer ?????

    Once again
    I can nor download my PHCC
    The cod say no
    When I phone Krishnan S on support he suddenly say he got problem with his internet and cannot go on phone later
    After that talk I can not come in in the computer I tryid to download from and that computer I had contakt with Krishnan
    What is the problem?

  • Strange Problem with a Vector wraped inside a Hashtable

    Hi all ,
    I'm having a strange problem with a Vector wraped within a Hashtable inherited Class.
    My goal is to keep the order of the elements of the Hashtable so what I did was to extend Hashtable and wrap a Vector Inside of it.
    Here is what it looks like :
    package somepackage.util;
    import java.util.Enumeration;
    import java.util.Hashtable;
    import java.util.Vector;
    public class OrderedHashTable extends Hashtable {
        private Vector index;
        /** Creates a new instance of OrderedHashTable */
        public OrderedHashTable() {      
            this.index = new Vector();
    //adds a key pair value to the HashTable and adds the key at the end of the index Vector
       public synchronized Object put(Object key,Object value){      
           index.addElement(key);
           Object obj = super.put(key,value);
           System.out.println("inside OrderedHashTable Put method index size = " + index.size());
           return obj;    
    public synchronized Object remove(Object key){
           int indx = index.indexOf(key);
           index.removeElementAt(indx);
           Object obj = super.remove(key);
           return obj;
    public synchronized Enumeration getOrderedEnumeration(){
           return index.elements();
    public synchronized Object getByIndex(int indexValue){
           Object obj1 = index.elementAt(indexValue);
           Object obj2 = super.get(obj1);      
           return obj2;
       public synchronized int indexOf(Object key){
        return index.indexOf(key);
        public synchronized int getIndexSize() {
            return index.size();
        }Everything seemed to work fine util I tried to add objects using a "for" loop such as this one :
    private synchronized void testOrderedHashTable(){
            OrderedHashTable test = new OrderedHashTable();
            for (int i = 1 ; i<15; i++){
                 System.out.println("adding Object No " + i);
                 String s = new String("string number = "+i);
                 test.put(new Integer(i),s);
                 System.out.println("-----------------------------------");
            //try to list the objects
            Enumeration e = test.getOrderedEnumeration();
            while (e.hasMoreElements()){
                Integer intObj = (Integer) e.nextElement();
                System.out.println("nextObject Number = "+ intObj);
        }Here is the console output :
    Generic/JSR179: adding Object No 1
    Generic/JSR179: inside OrderedHashTable Put method index size = 1
    Generic/JSR179: -----------------------------------
    Generic/JSR179: adding Object No 2
    Generic/JSR179: inside OrderedHashTable Put method index size = 2
    Generic/JSR179: -----------------------------------
    Generic/JSR179: adding Object No 3
    Generic/JSR179: inside OrderedHashTable Put method index size = 3
    Generic/JSR179: -----------------------------------
    Generic/JSR179: adding Object No 4
    Generic/JSR179: inside OrderedHashTable Put method index size = 4
    Generic/JSR179: -----------------------------------
    Generic/JSR179: adding Object No 5
    Generic/JSR179: inside OrderedHashTable Put method index size = 5
    Generic/JSR179: -----------------------------------
    Generic/JSR179: adding Object No 6
    Generic/JSR179: inside OrderedHashTable Put method index size = 6
    Generic/JSR179: -----------------------------------
    Generic/JSR179: adding Object No 7
    Generic/JSR179: inside OrderedHashTable Put method index size = 7
    Generic/JSR179: -----------------------------------
    Generic/JSR179: adding Object No 8
    Generic/JSR179: inside OrderedHashTable Put method index size = 8
    Generic/JSR179: -----------------------------------
    Generic/JSR179: adding Object No 9
    Generic/JSR179: inside OrderedHashTable Put method index size = 10
    Generic/JSR179: inside OrderedHashTable Put method index size = 10
    Generic/JSR179: -----------------------------------
    Generic/JSR179: adding Object No 10
    Generic/JSR179: inside OrderedHashTable Put method index size = 11
    Generic/JSR179: -----------------------------------
    Generic/JSR179: adding Object No 11
    Generic/JSR179: inside OrderedHashTable Put method index size = 12
    Generic/JSR179: -----------------------------------
    Generic/JSR179: adding Object No 12
    Generic/JSR179: inside OrderedHashTable Put method index size = 13
    Generic/JSR179: -----------------------------------
    Generic/JSR179: adding Object No 13
    Generic/JSR179: inside OrderedHashTable Put method index size = 14
    Generic/JSR179: -----------------------------------
    Generic/JSR179: adding Object No 14
    Generic/JSR179: inside OrderedHashTable Put method index size = 15
    Generic/JSR179: -----------------------------------
    Generic/JSR179: nextObject Number = 1
    Generic/JSR179: nextObject Number = 2
    Generic/JSR179: nextObject Number = 3
    Generic/JSR179: nextObject Number = 4
    Generic/JSR179: nextObject Number = 5
    Generic/JSR179: nextObject Number = 6
    Generic/JSR179: nextObject Number = 7
    Generic/JSR179: nextObject Number = 8
    Generic/JSR179: nextObject Number = 9
    Generic/JSR179: nextObject Number = 9
    Generic/JSR179: nextObject Number = 10
    Generic/JSR179: nextObject Number = 11
    Generic/JSR179: nextObject Number = 12
    Generic/JSR179: nextObject Number = 13
    Generic/JSR179: nextObject Number = 14
    You can notice that the output seems correct until the insertion of object 9.
    At this point the vector size should be 9 and the output says it is 10 elements long ...
    In the final check you can notice the 9 was inserted twice ...
    I think the problem has something to do with the automatic resizing of the vector but I'm not really sure. Mybe the resizing is done in a separate thread and the new insertion occurs before the vector is resized ... this is my best guess ...
    I also tested this in a pure J2SE evironment and I don't have the same strange behavior
    Can anybody tell me what I am doing wrong or how I could avoid this problem ?
    Thanks a lot !
    Cheers Alex

    Am i doing anything wrong?Uhm, yes. Read the API doc for addElement() and for addAll()

  • Error -50103 occured with timed loop inside a while loop

    Hello everyone,
    i wrote an application to sample analog voltage from  DAQ6024E card (see the attachments).
    I have a big while loop in the VI because a I want to add some other functions later.
    In the "WHILE_Cont Acq&Graph Voltage-Int Clk.vi" I use a while loop inside the big while loop to read the samples. It's working properly.
    but when I use a timed loop inside the big while loop (see "TIMED_LOOP_Cont Acq&Graph Voltage-Int Clk.vi"), I get an error -50103 from the timed loop.  It seems that the first cycle is ok, but after the first cycle the error occurs.
    I don't know what happens with the timed loop, anyone can help me? what does the error -50103 mean? thanks a lot!
    PS: I am using LabVIEW 8.0
    Message Edited by molo511 on 10-22-2006 05:21 AM
    Message Edited by molo511 on 10-22-2006 05:23 AM
    Attachments:
    TIMED_LOOP_Cont Acq&Graph Voltage-Int Clk.vi ‏143 KB
    WHILE_Cont Acq&Graph Voltage-Int Clk.vi ‏75 KB

    hi molo511,
    I tested your program but only with simulated devices. I had to delete the wire to the timing, so that the timed while loop runs with 1kHz. Did you already try this? Because this works on my PC.
    I also found a link in our database that might be interesting for you.
    http://digital.ni.com/public.nsf/websearch/04BEDD9E9E91ED3486256D180048116D?OpenDocument
    Greets
    Philipp N.
    NI Application Engineer

  • Problem with errorPage in page directive tag while proxying request from iPlanet to WebLogic

              Hi,
              We are using iPlanet 4.0 as the webserver and WebLogic 5.1 as the application server on different solaris machines. We have put our JSPs in the weblogic application server and proxy the requests from iplanet to weblogic.
              We are facing a problem with the errorPage in the 'Page Directive' tag of the JSP. We have given xxx.jsp as an 'errorpage' parameter in the page directive tag. If we directly access the JSP from the WebLogic, and there is an system error, the error page specified in the JSP is getting displayed. But if we access the JSP from iPlanet and there is an system error, instead of displaying the error page, iPlanet is asking whether we want to download the file. If we say yes it downloads the actual JSP code itself. We have defined the mime types in obj.conf file as well as mime.types for the iPlanet.
              If anyone knows how this can be solved, it would be of great help
              Regards,
              Krish
              

    How did you configure the obj.conf file? proxy by mime type or ppath? It
              seems errorPage.jsp was not proxyed and treated as a unknown mime type.
              Krishnaraja <[email protected]> wrote in message
              news:3a372d79$[email protected]..
              >
              > Hi,
              >
              > We are using iPlanet 4.0 as the webserver and WebLogic 5.1 as the
              application server on different solaris machines. We have put our JSPs in
              the weblogic application server and proxy the requests from iplanet to
              weblogic.
              >
              > We are facing a problem with the errorPage in the 'Page Directive' tag of
              the JSP. We have given xxx.jsp as an 'errorpage' parameter in the page
              directive tag. If we directly access the JSP from the WebLogic, and there is
              an system error, the error page specified in the JSP is getting displayed.
              But if we access the JSP from iPlanet and there is an system error, instead
              of displaying the error page, iPlanet is asking whether we want to download
              the file. If we say yes it downloads the actual JSP code itself. We have
              defined the mime types in obj.conf file as well as mime.types for the
              iPlanet.
              >
              > If anyone knows how this can be solved, it would be of great help
              >
              > Regards,
              > Krish
              

Maybe you are looking for

  • Control center doesn't work all the time in iOS 8

    I have the new iPhone 6+ and have noticed that sometimes I can't pull up control center. I have to unlock it, then lock it again and then it will pull up. I use this method to access the torch at night. Also to switch off the torch when the phone is

  • How to transfer waveform data to a sub vi

    I am trying to see plots in a subvi when I want it. In my test, the waveform chart in the main VI displays multiple plots of channels as I expected, but the subvi only shows a single plot. Program attached. I can simply convert the dynamic data to nu

  • JDBC Adapter - One Connection prior to SP20

    From my understanding a JDBC adapter can only establish one connection prior to SP20.  Given the above, does this mean that in can only process one message at a time? Thanks in advance. Duke

  • Exchange Server Online 2013 Email Reports & Unattended Emails from reciever

    Hello All, I am very new in exchange server, i there any way to get these following requirements  emails reports - to include info like no. of emails received by a particular user, unattended emails, response time to an email etc?   to check & implem

  • Using Extract Single Tone Information to detect phase

    Dear all, I have problem using Extract Single Tone Information vi to detect phase angle of a sine wave.  I posted similar question a few days ago regarding using the same vi to determine phase angle of a square wave and realised it couldn't be done b