Article View: borland.public.jbuilder.java.swing
Article #69Re: Button related question
From: Paul Nichols [TeamB]
Date: Sat, 17 Dec 2005 04:51
Date: Sat, 17 Dec 2005 04:51
116 lines
4630 bytes
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-mailReferences:
<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