Wait for a button click

Hi,
Here's the problem :
my main class calls :
LoginContext loginContext = new LoginContext("Main",
new DialogCallbackHandler());
I've made a DialogCallbackHandler class which opens a JFrame with 2 fields (TextField & PasswordField) and a button "ok".
But the LoginContext wants immediately an answer (the login & the password). How can I make the loginContext waiting for the button click.
I tried with a
while(!buttonClicked);
but it's not a good solution.
I also tried with a Thread inside this loop while and sleeps (during a 500 ms). But I think there's a better solution...
Can I make a wait, and a notify for this or not.
Thank you for your help.
Yann
-- http://www.objectweb.org/jonas

Why don't you use the JOptionPane class.
I think it provides all that you need.
For example use the method :
     String pass = "azedvge";
     JPasswordField passwordField = new JPasswordField(20);
     int result = JOptionPane.showConfirmDialog(parentComponent, password, "Password check", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
     if (result == JOptionPane.OK_OPTION) {
          String p = new String(passwordField.getPassword());
          if (p.equals(pass)) {
               // OK !
          else {
               System.exit(0);
     else {
          System.exit(0);
I hope this helps,
Denis

Similar Messages

  • Captivate 8 - I want my slides to stop at the end and wait for a button click to advance

    It works when published as HTML5, but NOT as swf.
    (I have those specific slides set to pause at the end.  They contain stuff the user might want to write down.)
    Instead, the swf project advances to the next slide and THEN stops.  Instead of using the forward button, the user has to use the play button on the skin.
    Any help would be greatly appreciated!

    I suppose you used the On Exit event to pause? In that case the SWF-behavior is normal behavior: the action occurs only after exiting the slide, so Pause will be on first frame of next slide.
    Why not add a click box, time it for the rest of the slide and it will pause at the last frame. And you talk about a Forward button? Why not use the pausing of that button to pause at the last frame (or almost at the last frame)?

  • I am writting a test  using a sequencer to test for multiple button click

    I'm using flex sdk 4.1 and have a situation where a  button click is sometimes called twice. I am writting a test for this using a sequencer and it will run for at least one button click, what I am not sure is how to test for multiple click events(which shouldn't happen, but occours randomly in my project)
    package tests.view
        import flash.events.MouseEvent;
        import flexunit.framework.Assert;
        import mx.events.FlexEvent;
        import org.flexunit.async.Async;
        import org.fluint.sequence.SequenceEventDispatcher;
        import org.fluint.sequence.SequenceRunner;
        import org.fluint.sequence.SequenceWaiter;
        import org.fluint.uiImpersonation.UIImpersonator;
        import views.AddComments;
        public class TestAddComments
            private var view:AddComments;
            [Before(async,ui)]
            public function setUp() : void
                view = new AddComments;
                Async.proceedOnEvent( this, view, FlexEvent.CREATION_COMPLETE, 600 );
                UIImpersonator.addChild( view );
            [Test]
            public function testButtonClick():void
                view.addCommentBtn
                var sequence:SequenceRunner = new SequenceRunner( this );
                sequence.addStep( new SequenceEventDispatcher( view.addCommentBtn, new MouseEvent( 'click', true, false ) ) );
                sequence.addStep( new SequenceWaiter( view.addCommentBtn, MouseEvent.CLICK, 100 ) );
                sequence.run();

    The only way you could test for that type of circumstance... one where something may happen... is to do so with a timeout. In other words, you cannot let the test pass simply because the first event occurred.
    Two ways to handle this... with sequences:
    Instead, you write a test that expects 2 clicks. In the assertion handler (which would only be reached if both clicks occur) you would fail the test:
    fail('i shouldnt be here');
    In the Waiter for the 2nd click, you would specify a timeout handler. That timeout handler will get called in the 2nd click does not occur in the specified time... (finding that time is the hard part). The default timeout handler fails the test, however, in your case, your timeout handler would just happily do any assertions needed and move on. A timeout does not necessarily mean failure... in your case, it is correct
    Second choice:
    You could create a timer. Create an event handler for the button click which increments a counter. Start the timer, do your test. However, have your test pending on the timer's completion rather than something like the click.. In that case, you would then be able to just check the count:
    private var clickCount:int = 0;
    [Test]
    public function testButtonClick():void {
         var timer:Timer = new Timer( 100, 1 );
        Async.handleEvent( this, timer, TimerEvent.COMPLETE, checkClickCount );
         view.addCommentBtn.addEventListener( 'click', function( e:Event ):void { clickCount++ } );
         view.addCommentBtn.dispatchEvent( new MouseEvent( 'click;, true, false ) );
    private function checkClickCount( e:Event ):void {
    assertEquals( 1, clickCount );
    However, I can't imagine how the test you are describing could ever yield more than one click event... I am guessing the problem is elsewhere, but this will help you verify
    Mike

  • Show waiting image on button click till response comes

    Hi All,
    I want to show waiting image on button click in a jsff page till response comes from back-end.
    For this I am using following code in button :-
    <af:commandButton text="Submit" id="cb1"
    actionListener="#{RegistrationManagedBean.onRegisterClick}"
    binding="#{RegistrationManagedBean.registerButton}"
    inlineStyle="width:65px; height:34px; font-size:11px; font-family:verdana; color:#fff; border-color:Gray; border-style:solid; border-width:1px; background-image:url(&quot;images/template-related/template_new/ButtonEnabledBG.png&quot;); background-repeat:repeat-x; float:right;"
    styleClass="button">
    <af:clientListener method="enforcePreventUserInput" type="action"/>
    </af:commandButton>
    enforcePreventUserInput is written inside on .js file.
    js code is :-
    function enforcePreventUserInput(evt) {
    var popup = AdfPage.PAGE.findComponentByAbsoluteId('pt1:r1:p1');
    if (popup != null){
    AdfPage.PAGE.addBusyStateListener(popup,handleBusyState);
    evt.preventUserInput();
    function handleBusyState(evt){
    var popup = AdfPage.PAGE.findComponentByAbsoluteId('pt1:r1:p1');
    if(popup!=null){
    if (evt.isBusy()){ 
    popup.show();
    else if (popup.isPopupVisible()) {
    popup.hide();
    AdfPage.PAGE.removeBusyStateListener(popup,handleBusyState);
    Popup code is :-
    <af:popup id="p1" contentDelivery="immediate">
    <af:dialog id="d2" type="none" closeIconVisible="false"
    inlineStyle="background-color:none !important; width:54px; height:55.0px;">
    <af:image source="/images/template-related/LoadingCircle.gif" shortDesc="Loading" id="i7"/>
    </af:dialog>
    </af:popup>
    This is working and image is also being shown but this image is not shown as transparent(where as image is transparent) and also image is having top and bottom shading which is because of dialog or popup. But i dont want this shadow. Also inline style is not working for this popup.
    If there is any other way to solve this purpose please suggest.
    Thanks
    Edited by: 915148 on Jun 4, 2012 1:19 AM

    Ok, we will use a movieclip button but is there a tutorial somewhere on how to display the image when the button is clicked?

  • Wait For A Button Press

    Hey, I am currently creating a game and need to know how to wait for a certain button to be pressed. A popup message comes up that tells the user to press a button, then I need to wait for the button to be pressed. Then once the button is pressed, I want another message to come up. The problem is, I have no idea how to wait for a button press after the first message comes up. Instead it just displays the first message, then the second directly after.
    Thanks

    So you have a button that is always present. Normally clicking the button does nothing. But sometimes a message shows up, in which case if the user clicks the button, something happens. Right?
    UI principles aside (it's bad form to display a button that does nothing), this is pretty simple.
    Create a field to track whether the button does anything. For example:
    private boolean buttonActive = false;In your action listener for that button, first check the value:
    public void actionPerformed(ActionEvent e) {
        if (buttonActive) {
            // do your thing
    }If the buttonActive is true, it does something, otherwise it does nothing.
    After you display the message, set buttonActive to true. When you want the button to become a brick again, set it to false.

  • Wait for a mouse click

    Really need help with this one. I'm writing a program to simulate a Risk game and I need to write a method to make two countries neighbors, which would be done by adding each the neighbor country to each country's neighbor's array. To do this, I will need to click on the country, click on the map and then click on the other country. My method gets the country's name but how do I tell it to wait for a mouse click before trying to get the second country's name???? I've tried everything but to no avail. Any help would be appreciated.

    Some object has to be made a mouse listener for the components that are representing countries (I guess there are multiple of these) and the map.
    It should have a variable to represent first country clicked on - a variable that is initially null. It will need another variable to store the information it obtains from the click on the map (location, or whatever). It responds more or less as follows:
    Cick on country:
    Is firstCountry null?
        If so make firstCountry the country that was clicked on and finish
        If not, do we have mapInfo?
            If so use firstCountry, the country that was clicked on and mapInfo to update the neightbour list. Then make mapInfo and firstCountry null. Then finish.
            If not, just finish (because we are waiting for a click on the map).
    Click on map:
    Is firstCountry null?
        If so, just finish (because we are waiting to start the process with a click on a country).
        If not, extract the information from the map and place in mapInfo. Then finish.
    As you can see "waiting" in a GUI is quite a complex business - nothing really pauses, rather it continues as usual until an event of the right "type" occurs. The listener maintains enough "state" (information) to know what it is listening for and to remember necessary information that it has heard and will use later.
    This is somewhat general. It is difficult to be more specific unless you post some code. It should not be pages of GUI code - just enough to illustrate the task of three clicks and an action.

  • Waiting for a mouse click in a single thread

    Here's my problem:
    I'm working on a program I didn't initially create, and I picked it up from the rough midpoint of its evolution. It is a single thread AWT program, with a mouseListener interface already implemented.
    Here's my problem. In a game setting, we have two players. It is no problem when both are computer controlled. When player one is controlled by a human, I need to wait for a mouse event before returning, because upon returning player two moves (regardless of its player configuration).
    I can't do any kind of busy waiting because it is a single thread. I'm looking for some kind of option besides making the program multithreaded. This also makes it difficult to use some sort of boolean variable, though I don't think it's impossible.
    Thanks in advance for any help.
    Eric

    #9 - You are correct in your assumptions. I agree it's
    not the best model, but it worked for the original
    purpose, which was to have one player always
    controlled by the computer, and the option of
    selecting a second player as being either human or
    computer. Since each move is made manually - that is,
    for a move to be made, it requires user input - there
    was no harm in returning from a function, because it
    had no immediate computation. The requirements have
    just changed, and now I must allow both players to be
    selectable. This presents a problem in that I have to
    wait for the move actions to finish before
    proceeding.Understood.
    >
    My only question is, how can I access the AWT thread?You mentioned in an earlier post that you have action listeners. As triggered by user events, these are always called on the AWT thread. For example:
    import javax.swing.*;
    import javax.awt.event.*;
    JButton button = new JButton( new AbstractAction {
            public void actionPerformed(ActionEvent e) {
                synchronized (myMonitor) {
                    myMonitor.notifyAll();
        });This button can be added to some swing UI. If clicked on, then actionPerformed will be called on the AWT thread, and any threads waiting on myMonitor will be notified.
    I see what you are saying - it's almost exactly what
    my coworkers told me - but I don't have the knowledge
    to implement it, which is why I'm here. Creating a
    monitor object isn't a problem (makeMove() would need
    to be synchronized, otherwise you wouldn't be able to
    call wait()),I recommend using a separate object for the monitor, especially if you are already using synchronized, so that you know exactly how each object's lock is being used. If you're sure it is safe, then there is nothing wrong with using the object itself as the monitor, as you suggest, however.
    but I'm not sure what you mean by the
    action handling method should be called on the AWT
    thread.Just that any action listener method is always called on the AWT thread in response to user action.
    Dave

  • Delete Record Behavior doesn't wait for Submit button

    I have master / detail page set.  From the detail set there are links to delete or update a record.  When I click the link to delete the record, it goes to the   confirmation page with the correct record.  Now, when I add the delete record server behavior and a submit button, this is what happens.  As soon as I click the link to go to the delete confirm page, the record deletes and the page redirects to the page I put in the server behavior.  It doesn't show the confirm page and doesn't wait for me to hit the confirm button.  The page runs and successfully deletes the page from the DB.
    How do I get it to wait until I hit the submit button?

    You need to surround your delete query with an "If" statement that checks for a confirmation variable of some sort, then when the user clicks the confirmation link you can pass the necessary variable and the ID of the record the delete query is expecting.
    As an alternative you could use a JS alert fuction to ask the user if they are sure they want to delete the record and then allwo the delet to run after confirmation. To do this you could use code like this...
    <input type="submit" name="DELETE" value="DELETE"
       onclick="return confirm('Are you SURE you want to DELETE this record?')">
    Lawrence   *Adobe Community Expert*
    www.Cartweaver.com
    Complete Shopping Cart Application for
    Dreamweaver, available in ASP, PHP and CF
    www.twitter.com/LawrenceCramer

  • Why does Lightroom 4.3 use very high cpu when waiting for user to click OK?

    I saved metadata for 52 photos. 
    Lightroom 4.3 couldn't save metadata for 2 of the photos and opened a window to tell me so. (It had no problem saving metadata on second attempt.)
    While it waited for my response and wasn't doing any work, it was using over 50% of my CPU.
    Why?
    Windows 7 is 32-bit Professional.
    Processor: Intel Core i5 750 Processor 2.66 GHz
    Here's my system info as reported by Lightroom. 
    Lightroom version: 4.3 [865747]
    Operating system: Windows 7 Business Edition
    Version: 6.1 [7601]
    Application architecture: x86
    System architecture: x86
    Logical processor count: 4
    Processor speed: 2.7 GHz
    Built-in memory: 3579.4 MB
    Real memory available to Lightroom: 716.8 MB
    Real memory used by Lightroom: 710.9 MB (99.1%)
    Virtual memory used by Lightroom: 847.9 MB
    Memory cache size: 2.0 MB
    Maximum thread count used by Camera Raw: 4
    System DPI setting: 96 DPI
    Desktop composition enabled: Yes
    Displays: 1) 1920x1080
    Application folder: C:\Program Files\Adobe\Adobe Photoshop Lightroom 4.3
    Library Path: D:\Users\Calvin\Pictures\My Lightroom\lightroom\lightroom4\lightroom4.lrcat
    Settings Folder: C:\Users\Calvin\AppData\Roaming\Adobe\Lightroom
    Adapter #1: Vendor : 10de
        Device : 640
        Subsystem : c9593842
        Revision : a1
        Video Memory : 1007
    AudioDeviceIOBlockSize: 1024
    AudioDeviceName: Speakers (Realtek High Definition Audio)
    AudioDeviceNumberOfChannels: 2
    AudioDeviceSampleRate: 44100
    Build: Uninitialized
    Direct2DEnabled: false
    GL_ALPHA_BITS: 0
    GL_BLUE_BITS: 8
    GL_GREEN_BITS: 8
    GL_MAX_3D_TEXTURE_SIZE: 2048
    GL_MAX_TEXTURE_SIZE: 8192
    GL_MAX_TEXTURE_UNITS: 4
    GL_MAX_VIEWPORT_DIMS: 8192,8192
    GL_RED_BITS: 8
    GL_RENDERER: GeForce 9500 GT/PCIe/SSE2
    GL_SHADING_LANGUAGE_VERSION: 3.30 NVIDIA via Cg compiler
    GL_VENDOR: NVIDIA Corporation
    GL_VERSION: 3.3.0
    OGLEnabled: true
    OGLPresent: true
    GL_EXTENSIONS: GL_ARB_arrays_of_arrays GL_ARB_base_instance GL_ARB_blend_func_extended GL_ARB_clear_buffer_object GL_ARB_color_buffer_float GL_ARB_compatibility GL_ARB_compressed_texture_pixel_storage GL_ARB_conservative_depth GL_ARB_copy_buffer GL_ARB_copy_image GL_ARB_debug_output GL_ARB_depth_buffer_float GL_ARB_depth_clamp GL_ARB_depth_texture GL_ARB_draw_buffers GL_ARB_draw_elements_base_vertex GL_ARB_draw_instanced GL_ARB_ES2_compatibility GL_ARB_ES3_compatibility GL_ARB_explicit_attrib_location GL_ARB_explicit_uniform_location GL_ARB_fragment_coord_conventions GL_ARB_fragment_layer_viewport GL_ARB_fragment_program GL_ARB_fragment_program_shadow GL_ARB_fragment_shader GL_ARB_framebuffer_no_attachments GL_ARB_framebuffer_object GL_ARB_framebuffer_sRGB GL_ARB_geometry_shader4 GL_ARB_get_program_binary GL_ARB_half_float_pixel GL_ARB_half_float_vertex GL_ARB_imaging GL_ARB_instanced_arrays GL_ARB_internalformat_query GL_ARB_internalformat_query2 GL_ARB_invalidate_subdata GL_ARB_map_buffer_alignment GL_ARB_map_buffer_range GL_ARB_multisample GL_ARB_multitexture GL_ARB_occlusion_query GL_ARB_occlusion_query2 GL_ARB_pixel_buffer_object GL_ARB_point_parameters GL_ARB_point_sprite GL_ARB_program_interface_query GL_ARB_provoking_vertex GL_ARB_robust_buffer_access_behavior GL_ARB_robustness GL_ARB_sampler_objects GL_ARB_seamless_cube_map GL_ARB_separate_shader_objects GL_ARB_shader_bit_encoding GL_ARB_shader_objects GL_ARB_shader_texture_lod GL_ARB_shading_language_100 GL_ARB_shading_language_420pack GL_ARB_shading_language_include GL_ARB_shading_language_packing GL_ARB_shadow GL_ARB_stencil_texturing GL_ARB_sync GL_ARB_texture_border_clamp GL_ARB_texture_buffer_object GL_ARB_texture_buffer_range GL_ARB_texture_compression GL_ARB_texture_compression_rgtc GL_ARB_texture_cube_map GL_ARB_texture_env_add GL_ARB_texture_env_combine GL_ARB_texture_env_crossbar GL_ARB_texture_env_dot3 GL_ARB_texture_float GL_ARB_texture_mirrored_repeat GL_ARB_texture_multisample GL_ARB_texture_non_power_of_two GL_ARB_texture_query_levels GL_ARB_texture_rectangle GL_ARB_texture_rg GL_ARB_texture_rgb10_a2ui GL_ARB_texture_storage GL_ARB_texture_storage_multisample GL_ARB_texture_swizzle GL_ARB_texture_view GL_ARB_timer_query GL_ARB_transpose_matrix GL_ARB_uniform_buffer_object GL_ARB_vertex_array_bgra GL_ARB_vertex_array_object GL_ARB_vertex_attrib_binding GL_ARB_vertex_buffer_object GL_ARB_vertex_program GL_ARB_vertex_shader GL_ARB_vertex_type_2_10_10_10_rev GL_ARB_viewport_array GL_ARB_window_pos GL_ATI_draw_buffers GL_ATI_texture_float GL_ATI_texture_mirror_once GL_S3_s3tc GL_EXT_texture_env_add GL_EXT_abgr GL_EXT_bgra GL_EXT_bindable_uniform GL_EXT_blend_color GL_EXT_blend_equation_separate GL_EXT_blend_func_separate GL_EXT_blend_minmax GL_EXT_blend_subtract GL_EXT_compiled_vertex_array GL_EXT_Cg_shader GL_EXT_depth_bounds_test GL_EXT_direct_state_access GL_EXT_draw_buffers2 GL_EXT_draw_instanced GL_EXT_draw_range_elements GL_EXT_fog_coord GL_EXT_framebuffer_blit GL_EXT_framebuffer_multisample GL_EXTX_framebuffer_mixed_formats GL_EXT_framebuffer_multisample_blit_scaled GL_EXT_framebuffer_object GL_EXT_framebuffer_sRGB GL_EXT_geometry_shader4 GL_EXT_gpu_program_parameters GL_EXT_gpu_shader4 GL_EXT_multi_draw_arrays GL_EXT_packed_depth_stencil GL_EXT_packed_float GL_EXT_packed_pixels GL_EXT_pixel_buffer_object GL_EXT_point_parameters GL_EXT_provoking_vertex GL_EXT_rescale_normal GL_EXT_secondary_color GL_EXT_separate_shader_objects GL_EXT_separate_specular_color GL_EXT_shadow_funcs GL_EXT_stencil_two_side GL_EXT_stencil_wrap GL_EXT_texture3D GL_EXT_texture_array GL_EXT_texture_buffer_object GL_EXT_texture_compression_dxt1 GL_EXT_texture_compression_latc GL_EXT_texture_compression_rgtc GL_EXT_texture_compression_s3tc GL_EXT_texture_cube_map GL_EXT_texture_edge_clamp GL_EXT_texture_env_combine GL_EXT_texture_env_dot3 GL_EXT_texture_filter_anisotropic GL_EXT_texture_integer GL_EXT_texture_lod GL_EXT_texture_lod_bias GL_EXT_texture_mirror_clamp GL_EXT_texture_object GL_EXT_texture_shared_exponent GL_EXT_texture_sRGB GL_EXT_texture_sRGB_decode GL_EXT_texture_storage GL_EXT_texture_swizzle GL_EXT_timer_query GL_EXT_vertex_array GL_EXT_vertex_array_bgra GL_EXT_import_sync_object GL_IBM_rasterpos_clip GL_IBM_texture_mirrored_repeat GL_KHR_debug GL_KTX_buffer_region GL_NV_blend_square GL_NV_conditional_render GL_NV_copy_depth_to_color GL_NV_copy_image GL_NV_depth_buffer_float GL_NV_depth_clamp GL_NV_ES1_1_compatibility GL_NV_explicit_multisample GL_NV_fence GL_NV_float_buffer GL_NV_fog_distance GL_NV_fragment_program GL_NV_fragment_program_option GL_NV_fragment_program2 GL_NV_framebuffer_multisample_coverage GL_NV_geometry_shader4 GL_NV_gpu_program4 GL_NV_half_float GL_NV_light_max_exponent GL_NV_multisample_coverage GL_NV_multisample_filter_hint GL_NV_occlusion_query GL_NV_packed_depth_stencil GL_NV_parameter_buffer_object GL_NV_parameter_buffer_object2 GL_NV_path_rendering GL_NV_pixel_data_range GL_NV_point_sprite GL_NV_primitive_restart GL_NV_register_combiners GL_NV_register_combiners2 GL_NV_shader_buffer_load GL_NV_texgen_reflection GL_NV_texture_barrier GL_NV_texture_compression_vtc GL_NV_texture_env_combine4 GL_NV_texture_expand_normal GL_NV_texture_multisample GL_NV_texture_rectangle GL_NV_texture_shader GL_NV_texture_shader2 GL_NV_texture_shader3 GL_NV_transform_feedback GL_NV_vertex_array_range GL_NV_vertex_array_range2 GL_NV_vertex_buffer_unified_memory GL_NV_vertex_program GL_NV_vertex_program1_1 GL_NV_vertex_program2 GL_NV_vertex_program2_option GL_NV_vertex_program3 GL_NVX_conditional_render GL_NVX_gpu_memory_info GL_SGIS_generate_mipmap GL_SGIS_texture_lod GL_SGIX_depth_texture GL_SGIX_shadow GL_SUN_slice_accum GL_WIN_swap_hint WGL_EXT_swap_control

    I don't think so. 
    I have enough experience with LR to know what to expect for various activities. 
    Previews for all photos had been rendered long before I initiated the Save Metadata.
    Metadata for 50 of the 52 files had already been written. 
    The high cpu had gone on for at least 5 minutes.   I switched to another app imediately after initiating the Save Metadata for the 52 files and only went back to LR when I heard my CPU fan running for a long time.
    When I got back to LR, I saw the "Could not save metadata" window.  I clicked "Show in Library" and OK.  As soon as I did that, CPU usage went back to normal. 
    I've experienced the exact same scenario, where LR can't save metadata for all photos and I've never had LR get stuck consuming a very large amount of CPU.
    As a test, I selected 118 other photos, changed metadata for all of them and then selected all and saved metadata.  LR took about 20 seconds to save metadata for all 118 and LR CPU usage never went above 17%.  The difference is that LR did not show the "Could not save metadata" window.

  • Trying to wait for a button press on a seperate JFrame- problems.

    Hi,
    I've been getting aquainted with Java recently. I'd like to think I was reasonable now at creating console based applications but I'm having a lot of trouble getting used to the swing API. I'm making a little game type thing at the moment and part of it involves displaying a problem to the user in a seperate JFrame and returning which option they picked. If I was doing this in a console based App I'd probably do something along the lines of:
         while (UserInput == null) { //while they haven't entered anything continue to loop.
              UserInput = InputScanner.next(); //get the user's input
         }I thought I'd do something similar for my JFrame based app but haven't been able to do it. I essentially would like the code to not execute past a certain point until one of the options on the JFrame has been picked. Here's the code for the JFrame showing the dilemma to the user:
    import javax.swing.*;
    import java.awt.event.*;
    import java.awt.*;
    * This is the window displayed to a user with dilemma details
    public class DilemmaWindow extends JFrame implements ActionListener {
        int OptionPicked = 0; //the option the user picks
        JLabel DescriptionLabel;
        JButton Button1;
        JButton Button2;
        public DilemmaWindow(String WindowTitle, String LabelText, String Button1Text, String Button2Text) {
            //construct the JFrame with the relevant parameters
            setTitle(WindowTitle);
            setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
            setLayout(new FlowLayout(FlowLayout.CENTER));
            Button1 = new JButton(Button1Text);
            Button2 = new JButton(Button2Text);
            Button1.addActionListener(this);
            Button2.addActionListener(this);
            DescriptionLabel = new JLabel();
            DescriptionLabel.setText(LabelText);
            add(DescriptionLabel);
            add(Button1);
            add(Button2);
            pack();
            setVisible(true);
        public void actionPerformed(ActionEvent evt) {
            //determine which button was clicked and set OptionPicked accordingly
            if(evt.getSource() == Button1) {
                OptionPicked = 1;
            } else {
                OptionPicked = 2;
        public int GetDilemmaChoice() {
            if (OptionPicked > 0) { //if an option was picked
            this.dispose(); //clean up the window
            return OptionPicked; //return which option was picked
    }The idea of this being that it constructs a window and when the GetDilemmaChoice() function is called it'll return which button has been clicked.
    I do, as I said, want to wait until one of the buttons has been clicked before continuing with the execution of the code in the class that constructs the JFrame, so I made the following function:
    public int GetDilemmaChoice() {
            int Choice = 0;
            DilemmaWindow MyDilemmaWindow = new DilemmaWindow(CaperDilemma.GetDilemmaName(),CaperDilemma.GetDilemmaDescription(),CaperDilemma.GetOption1Text(),CaperDilemma.GetOption2Text());
            while (Choice == 0) {
                Choice = MyDilemmaWindow.GetDilemmaChoice();      
            return Choice;
        }The idea being that while the window returns that no buttons have been clicked the function loops round. The problem I'm having is that the while loop continually looping seems to hog all the CPU time or something, as the dilemma JFrame doesn't display properly (I get a blank window, with none of the buttons) and so I can't click any of the options. I've been banging my head against a brick wall all day trying to get round this and am wondering if I should put the looping in a seperate thread or something. Sadly, though, I don't know anything about threads so wouldn't know where to start.
    If anyone has any idea of how to solve this problem I'd be very grateful! I hope I've managed to explain it well enough.

    Why not use a modal JDialog here and not a JFrame. You probably shouldn't be coding directly to a JFrame (or JDialog) anyway but to a JPanel that can be placed on the proper root container of choice (which again here is a JDialog). You can make your JPanel as complex as desired, then place it in the JDialog, make that dialog application modal, and when you show it via setVisible(true), the application will halt at that point until the dialog has been dealt with.

  • How to listen for actionContent button click event in View

    Hello,
    Doing this:
    FlexGlobals.topLevelApplication.addEventListener('actionContentClick',showOptions);
    Results in calling showOptions() as many times as the view was showed. The handler sticks and each time I enter a view in the creationComplete hander for it I add the same listener over and over again.
    How should this be done?
    1. FlexGlobals.topLevelApplication is the right object to listen to?
    2. I can remove the listener on view deactivate, but I am not sure if that will be called each time the view goes away.
    3. Can I check if an object already has a listener and which is it?
    Thank you.

    Thank you, Tom.
    I was complicating things for myself by exposing methods in the main MXML file to add and remove and listen to click events on a button placed in the actionContent, instead of declaring it in MXML for each and adding a listener to it. Views had different actionContent buttons or rather icons for them.
    In regards to hasEvenListener, can I also get the method(s) attached to that? Probably not though.

  • Switching Frames (cardsLayout), doing something, waiting for button

    Hi,
    I am switching JFrames in my application and each frame is to call a specific function and then wait for a button click.
    so the code would be:
    function(){
            cardsLayout.show();
            doSomeCalculations();
            waitForButtonClick
            continueWithSomething //depending on which Button was clicked
    }My problem is, how to realize the waitForButtonClick?
    What would you suggest? I have heard about synchronize. Is this the way to go, or is there an easier/better way?
    Besides a while(notClicked) way ;-)
    Thanks!

    pir wrote:
    it is not that I do not want to learn Java. Please understand that Java is not with what I am earning my living, it is a tool for me, to make some task easier, which I would have otherwise have to do step by step by hand. I will never be as good as someone who spends his time with Java every day. I also have only a specific task to perform in a given time, so I need only specific information - which I am definitely willing to learn - and not all there is about Java and Swing.You must understand that at its core, your question is not about anything specific but rather it boils down to: "how to create an event driven program in Swing".
    The only reasonable answer to this is to send you to the Swing tutorials where, if you have the interest, ability, and inclination, you can learn the tools needed to do Swing and event programming. If you choose not to do this, no one in this forum can help you. Period.
    I hope this clarifies the situation enough, to allow someone to have a heart and point me in the right specific direction, even knowing that I might use this knowledge only once.And once again, I recommend that you hit the Sun Swing tutorials and start learning. Accept this and follow this recommendation and you will find success. If not, well,... it's your choice.
    Thank you in advance for any specific help.This is as specific as it's going to get at this stage. Much luck.

  • How to add a new button in IC tool bar and handle the event for the button?

    Hi,
        I am working on CRM 2007 Interaction center. To add a new button to IC toolbar, customizing is available to define a new button and then assign in to the profile.
    In SPRO->CRM->IC webclient->Customer Specifc System Modifications->Define Toolbar Buttons, I defined one new button with ID ZSTART.
    Now in SPRO->CRM->IC webclient->Basic Functions->Communication Channels->Define Toolbar Profiles , I selected Default profileid and in Generic Layout Buttons Tab, I added the new button ZSTART in Position 3.
         So after completing the customizing when the user logs in using role IC_AGENT,  the button (with ID:ZSTART) gets displayed in the IC toolbar too.
          Now on click of this button, I need to create an object.
    To do so, I have to catch the event which is raised by this new button.
           Please let me how to implement the event handler for this new button. What will be the event name for this button click event and how I can subscribe for it ?
         Please let me know if anyone of you have already worked on similar requirements.
    Regards,
    Manas.
    Edited by: manas sahoo on Jul 22, 2008 7:49 PM

    Hello Manas,
    There are a couple of threads in the community that might help you out (if you haven't already found them):
    Re: IC Web Client Toolbar
    /message/3621917#3621917 [original link is broken]
    Regards,
    Renee Wilhelm
    Edited by: Renee Wilhelm on Nov 6, 2008 7:46 PM

  • What should I do if the iphoto keeps on saying that "Plz wait for import to complete" when i click the close button but it is not importing photos? How can I close the iPhoto? I try to switch my mac off but it doesn't work. Thanks.

    What should I do if the iphoto keeps on saying that "Plz wait for import to complete" when i click the close button but it is not importing photos? How can I close the iPhoto? I try to switch my mac off but it doesn't work. Thanks.

    You should be able to select Force Quit from the menu beneath the Apple icon in Finder
    and choose to Quit iPhoto from there, without messing up the Mac OS X in the process.
    OS X - Support
    Not sure if rebuilding the iPhoto library would help this issue. However if you had to
    turn off the computer without the correct method (unplug, etc; instead of menu choice)
    the system may have accrued damages and should be checked, maybe repaired by
    use of the Disk Utility in the system. Or restart the computer in Safe Boot mode, then
    run 'repair disk permissions' while it is running in that reduced mode; then restart after.
    •Understanding Safe Mode - tuts+ computer skills tutorial:
    http://computers.tutsplus.com/tutorials/understanding-safe-mode--mac-59897
    •OS X: What is Safe Boot, Safe Mode?
    Suggestions on how to use Safe Mode in article, to resolve issues, may be helpful.
    There likely are other means to rectify troublesome applications, including reinstall.
    Be sure to backup your music, image, video, and other work on an external drive
    or suitable device as a precaution against loss should there be a hard drive failure.
    iPhoto - Mac Apps - Apple Support
    There should be some tips and help information using iPhoto via this tiny Support link.
    Good luck & happy computing!

  • Waiting for button click

    Hi,
    I'm trying to create a program in which the program does nothing until one of the buttons is pressed, then acts accordingly. The way the program works, though, it can't just be by using the ActionPerformed method.
    Currently, I have a while() loop that cycles through until one of the buttons is pressed, which kicks it out of the loop and allows that button to be processed. The problem, however, is that when the program is run, the while() loop takes control over the program and doesn't allow any buttons to be clicked, therefore rendering the loop infinite.
    Basically what I need is a way for the while() loop to still be running, but at the same time for the buttons to be rendered able to be clicked so that the loop can end.
    Is this possible?
    Thanks in advance.

    You might want to post your code so we can see what's going on. I post my code here a lot. Just remember to post only the relevant parts, but if you feel that it's necessary to post the whole program, always put something like "Warning: long post" in the subject header.
    You might want to put your buttons in an array, and for each button, attach an ActionListener to it. Then have an inner ButtonHandler class. Here's how I would do it:
    for (i=0; i<buttonArray.length; i++)
      buttonArray.addActionListener(handler);
    Then at the end of your code, that is between the end of main and the last closing curly brace, try this:
    private class ButtonHandler implements ActionListener
      public void actionPerformed(ActionEvent e)
        buttonPressed = e.getActionCommand();
    I hope this sheds some light.  I don't know exactly what your code looks like, but hopefully, I'm making a good shot in the dark.  I don't see any need in using a while loop.  Just give this a shot, and if you still have problems, feel free to post your code and let us look at it.  Hope this helps! :-)
    Syster Tara

Maybe you are looking for