🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: borland.public.jbuilder.java.swing
Article #69

Re: Button related question

#69
From: Paul Nichols [TeamB]
Date: Sat, 17 Dec 2005 04:51
116 lines
4630 bytes
GEORGE wrote:

> Paul,
> 
> Thanks for replying.  I'm sorry to have made you type so much but my
> problem is much simpler than what you thought.
> 
> I have a dialog with bunch of controls one of which is the OK button. 
> What I want is that should the user press Enter when this dialog has been
> activated,  then the actionPerformed of the OK button should be executed
> (even if the cursor is currently in , say, a text field).   Hope this
> makes sense.
> 
> George
> 
> "Paul Nichols [TeamB]" <paul@comp.net> wrote in message
> news:43a22b75@newsgroups.borland.com...
>> GEORGE wrote:
>>
>>> I would like that when the user presses the Enter key in a dialog, the
>>> actionPerformed() of a designated button should be executed.  Is there a
>>> button property for this purpose?  How to achieve this effect?
>>>
>>> Thanks
>>>
>>> George
>>
>> I am not exactly sure what you are asking, but I will take a stab at
>> making
>> an assumption.
>>
>>
>> You have a Dialog and you want to activate the Event listener on another
>> JFrame or JPanel. The solution is to get the instance of that parent
>> container.
>>
>> The easiest way to do this, is to have a static instance of the container
>> you wish to access. Example:
>>
>> public class MyJPanel extends JPanel {
>>
>>  static MyJPanel panel;
>>
>>
>>  public MyJPanel() {
>>   super();
>>
>>  }
>>
>>  public static MyJPanel getMyJPanel(){
>>    if(panel==null){
>>      panel= new MyJPanel();
>>    }
>>   return panel;
>>  }
>>
>>
>>
>>  //Now call the getMyJPanel from the Dialog
>>
>>  public void jDialogButton1_actionPerformed(ActionEvent actionEvent) {
>>     MyJPanel panel=MyJPanel.getMyJPanel();
>>         panel.jButton2_actionPerformed(null);
>>  }
>>
>>  Of course another and a much better way to do thisand avoid dependencies
>> upon your view Components, is to create Listener class(es) that will
>> implement listeners according to usage in the application. Those
>> listeners that would be commonly used in the application or which need to
>> be able to access methods across Frames, Dialogs, etc. could have static
>> references or
>> be contained in a static class. This enforces better separation between
>> classes. Since I do not know your programming background, I do not know
>> what to reference as a a concept here. If you have database programming
>> background, think of a linkiOK,ng table concept.
>>
>>
>>
>>
Whew,

You do not want much, do you :)


OK, here is how I made it work.

First, you will need to define an AbstractEvent (I am doing this in the
jbInit() method)



public void jbInit() throws Exception {
  //All of the normal initialization code first. Dots below represent code.  
  //DO NOT TYPE THE DOTS!!
  ..............

   //Put this code in your code.. Of course change the names to your
   // component names
//replace with your JDialog name
     final SimpleDialog sd=(SimpleDialog)this;
 //Create a new AbstractAction javax.swing.AbstractAction
     javax.swing.Action anAction = new javax.swing.AbstractAction() {
          public void actionPerformed(ActionEvent e) {
           //assuming jButton1 is your name and the actionPerformedEvent
            sd.jButton1_actionPerformed(null);
          }
         };
          javax.swing.JComponent jc=(javax.swing.JComponent)
              sd.getComponent(0);
          jc.getInputMap(javax.swing.JComponent.WHEN_IN_FOCUSED_WINDOW).
            put(javax.swing.KeyStroke.getKeyStroke("ENTER"),"myAction");
          jc.getActionMap().put("myAction",anAction);
    }
  }  

That should do it for you..
Technical Details
Message-ID: <43a24386@newsgroups.borland.com>
Path: arc1-ca.pugleaf.net!g2news1.google.com!news4.google.com!border1.nntp.dca.giganews.com!nntp.giganews.com!newscon06.news.prodigy.com!prodigy.net!news.linkpendium.com!news.linkpendium.com!newsfeeds.ihug.co.nz!ihug.co.nz!newsgroups.borland.com!not-for-mail
References: <43a208cd@newsgroups.borland.com> <43a22b75@newsgroups.borland.com> <43a22e54$1@newsgroups.borland.com>

Show Full Headers
Complete Article Headers
X-Google-Thread: 111d45,84ac8c3cf3b463d
X-Google-Attributes: gid111d45,public
X-Google-Language: ENGLISH,ASCII-7-bit
Message-ID: <43a24386@newsgroups.borland.com>
From: "Paul Nichols [TeamB]" <paul@comp.net>
Subject: Re: Button related question
Newsgroups: borland.public.jbuilder.java.swing
Date: Fri, 16 Dec 2005 22:51:38 -0600
References: <43a208cd@newsgroups.borland.com> <43a22b75@newsgroups.borland.com> <43a22e54$1@newsgroups.borland.com>
Lines: 117
User-Agent: KNode/0.9.2
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7Bit
NNTP-Posting-Host: 68.113.120.52
X-Trace: newsgroups.borland.com 1134707590 68.113.120.52 (15 Dec 2005 20:33:10 -0700)
Path: arc1-ca.pugleaf.net!g2news1.google.com!news4.google.com!border1.nntp.dca.giganews.com!nntp.giganews.com!newscon06.news.prodigy.com!prodigy.net!news.linkpendium.com!news.linkpendium.com!newsfeeds.ihug.co.nz!ihug.co.nz!newsgroups.borland.com!not-for-mail