🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: borland.public.jbuilder.java.language
Article #373

Re: Professional usage of Swing

#373
From: Alexey N. Solofnenko
Date: Mon, 02 May 2005 20:48
170 lines
5441 bytes
Well, I guess I was close to what you need. You can put your object into 
Application class and into button panel. For that I usually define an 
extra method (like "initWith(A obj)") to set the object reference in GUI 
components.

It also looks like you do not use JBuilder's GUI designer and type 
actions manually. It is much easier to use the designer - it will 
generate necessary code itself.

- Alexey.

Thomas Arend wrote:
> As I have not quite understood your answer here is  a simplyfied example and
> perhaps you could tll me how to handle it::
> 
> 
> public class A {
>   public A(){
> 
>     // ...
>   }
>   public void methodOneOfA (){
>   /... <manipulates i in one way>
>   };
>   public void methodTwoOfA (){
>   /... <manipulates i in another way>
>   };
>   int i;
> }
> 
> Now I would like to manipulate A:
> 1. way (command line method):
> 
> public class mainprog {
>   public mainprog() {
>   }
>   public static void main(String[] args) {
>           testobj  = new A();
>           testobj.methodOneOfA();
>           testobj.methodTwoOfA();
>   }
>  A testobj;
> }
> 
> As everything worked well, I would like to get the two methods as a result
> of pressing seperate buttons in a swing-application.
> Up to now I did it the following way:
> class ButtonPanel  extends JPanel  implements ActionListener  {
>   public ButtonPanel() {
>       FirstButton = new JButton("method1");
>       SecondButton = new JButton("method2");
> 
>       add(FirstButton);
>       add(SecondButton);
> 
>       FirstButton.addActionListener(this);
>       SecondButton.addActionListener(this);
>      testobj =  new A();
>  }
>  public void actionPerformed (ActionEvent evt)
>  {
>      Object source = evt.getSource();
>      if (source == FirstButton)
>        testobj.methodOneOfA();
>      else if (source == SecondButton)        testobj.methodTwoOfA();
>    }
> 
>  }
>   private A testObj;
> }
> 
> public class ButtonFrame extends JFrame {
>   public ButtonFrame() {
>     setSize(350,200);
>     addWindowListener(new WindowAdapter(){
>       public void windowClosing(WindowEvent e){
>         System.exit(0);
>       }});
>     Container contentPane = getContentPane();
>     contentPane.add(new ButtonPanel());
>   }
> }
> public class mainprog {
>   public mainprog() {
>   }
>   public static void main(String[] args) {
> 
>           JFrame frame  = new ButtonFrame();
>           frame.show();
>   }
> }
> 
> 
> 
> But I don't know if putting the main Obj in the class ButtonPanel. Perhaps
> it would be better to put it anywhere else, isn't it?
> 
> OK?
> 
> Thomas
> 
> 
> 
> "Alexey N. Solofnenko" <trelony@mail.ru> schrieb im Newsbeitrag
> news:427650ba$1@newsgroups.borland.com...
> 
>>If I understood your question correctly.... I usually add method
>>initWith(SomeObject obj) method that I call just after a form is created.
>>
>>- Alexey.
>>
>>Thomas Arend wrote:
>>
>>>I have once again one of these questions dealing with the professional
> 
> usage
> 
>>>of the advices of school-books about java.
>>>So here it is:
>>>I try to implement an application, that in the whole manipulates a
> 
> certain
> 
>>>class A. That means every action in the gui is to manipulate a central
>>>object OA.
>>>I have implemented the manipulation of the object OA in an apllication
> 
> that
> 
>>>can to be used on the command-line.
>>>
>>>Now I would like to use swing-components. And here the problem comes up:
> 
> In
> 
>>>which class (extended from a Swing component) do I now create the
> 
> central
> 
>>>object?
>>>Is it the "main" part, where I normally would only create the Jframe an
> 
> call
> 
>>>"frame.show"; is it in the JFrame-constructor or is it in the content
>>>Pane in the JPanel, where I also implement the Buttons, menues and so
> 
> on?
> 
>>>And how do I make the central object known to all components of the GUI
>>>(in other words: Where do I implement the call of the methods of  the
> 
> class
> 
>>>to manipulate the object for example after pressing a Button?)
>>>
>>>A long question, but as I said: My books only tell me where it is
> 
> posible,
> 
>>>but not what is best.
>>>
>>>Thanks
>>>Thomas
>>>
>>>
>>>
> 
> 
> 
Technical Details
Message-ID: <4276922d$1@newsgroups.borland.com>
Path: arc1-ca.pugleaf.net!g2news1.google.com!news1.google.com!proxad.net!fr.ip.ndsoftware.net!border2.nntp.ams.giganews.com!border1.nntp.ams.giganews.com!nntp.giganews.com!pe2.news.blueyonder.co.uk!blueyonder!news-peer-test!btnet!newsfeed.bt.es!caladan.landsraad.net!newsgroups.borland.com!not-for-mail
References: <4274ed66$1@newsgroups.borland.com> <427650ba$1@newsgroups.borland.com> <42768fcf@newsgroups.borland.com>

Show Full Headers
Complete Article Headers
X-Google-Thread: f74b3,ee5938833f2078a1
X-Google-Attributes: gidf74b3,public
X-Google-Language: ENGLISH,ASCII-7-bit
Date: Mon, 02 May 2005 13:48:47 -0700
From: "Alexey N. Solofnenko" <trelony@mail.ru>
User-Agent: Mozilla Thunderbird 1.0+ (Windows/20050502)
MIME-Version: 1.0
Newsgroups: borland.public.jbuilder.java.language
Subject: Re: Professional usage of Swing
References: <4274ed66$1@newsgroups.borland.com> <427650ba$1@newsgroups.borland.com> <42768fcf@newsgroups.borland.com>
In-Reply-To: <42768fcf@newsgroups.borland.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
NNTP-Posting-Host: 208.200.221.5
Message-ID: <4276922d$1@newsgroups.borland.com>
X-Trace: newsgroups.borland.com 1115066925 208.200.221.5 (2 May 2005 13:48:45 -0700)
Lines: 170
Path: arc1-ca.pugleaf.net!g2news1.google.com!news1.google.com!proxad.net!fr.ip.ndsoftware.net!border2.nntp.ams.giganews.com!border1.nntp.ams.giganews.com!nntp.giganews.com!pe2.news.blueyonder.co.uk!blueyonder!news-peer-test!btnet!newsfeed.bt.es!caladan.landsraad.net!newsgroups.borland.com!not-for-mail