🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Button related question

#71
From: GEORGE
Date: Fri, 16 Dec 2005 13:36
129 lines
5022 bytes
Paul & Alex,

Thanks a lot!  I had forgotten all about root panes.  Haven't been there for 
the longest time :-)


"Paul Nichols [TeamB]" <paul@comp.net> wrote in message 
news:43a24386@newsgroups.borland.com...
> 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: <43a2c296$1@newsgroups.borland.com>
Path: arc1-ca.pugleaf.net!g2news1.google.com!news2.google.com!proxad.net!212.101.4.254.MISMATCH!solnet.ch!solnet.ch!newsfeed01.sul.t-online.de!t-online.de!newsgroups.borland.com!not-for-mail
References: <43a208cd@newsgroups.borland.com> <43a22b75@newsgroups.borland.com> <43a22e54$1@newsgroups.borland.com> <43a24386@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
From: "GEORGE" <geo@nowhere.net>
Newsgroups: borland.public.jbuilder.java.swing
References: <43a208cd@newsgroups.borland.com> <43a22b75@newsgroups.borland.com> <43a22e54$1@newsgroups.borland.com> <43a24386@newsgroups.borland.com>
Subject: Re: Button related question
Date: Fri, 16 Dec 2005 08:36:32 -0500
Lines: 131
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2900.2180
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180
X-RFC2646: Format=Flowed; Original
NNTP-Posting-Host: 70.21.193.254
Message-ID: <43a2c296$1@newsgroups.borland.com>
X-Trace: newsgroups.borland.com 1134740118 70.21.193.254 (16 Dec 2005 05:35:18 -0700)
Path: arc1-ca.pugleaf.net!g2news1.google.com!news2.google.com!proxad.net!212.101.4.254.MISMATCH!solnet.ch!solnet.ch!newsfeed01.sul.t-online.de!t-online.de!newsgroups.borland.com!not-for-mail