Article View: borland.public.jbuilder.java.swing
Article #71Re: Button related question
From: GEORGE
Date: Fri, 16 Dec 2005 13:36
Date: Fri, 16 Dec 2005 13:36
129 lines
5022 bytes
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-mailReferences:
<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