Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!news.glorb.com!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail From: Lew Newsgroups: comp.lang.java.programmer Subject: Re: I need a different approach - suggestions please Date: Mon, 25 Jun 2012 18:36:02 -0700 (PDT) Organization: http://groups.google.com Lines: 59 Message-ID: References: NNTP-Posting-Host: 69.28.149.29 Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 X-Trace: posting.google.com 1340674660 19226 127.0.0.1 (26 Jun 2012 01:37:40 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Tue, 26 Jun 2012 01:37:40 +0000 (UTC) In-Reply-To: Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=69.28.149.29; posting-account=CP-lKQoAAAAGtB5diOuGlDQk0jIwmH0T User-Agent: G2/1.0 Xref: csiph.com comp.lang.java.programmer:15593 bilsch wrote: > markspace wrote: >> bilsch wrote: >>> I'm trying to make a program that works like the calculator in Windows >>> Accessories - all input is from button clicks. ... >>> Everytime the method is called the string is reinitialized >>> with the result that my sequence of digits is only ever one digit long. >>> My plan would work if I could initialize the string outside the method, >>> however variable scope in Java doesn't allow it. >> >> First, good job on making a very reasonable SSCCE. >> >> Second, the trick to Java's scoping rules is to change the rules! >> >> Move the string strng1 from inside the actionPerformed to outside, right >> below the CalcGUIQ1 gui; line. Now Java's scoping rules help you rather >> than hinder you. >> >> BTW, this looks like a homework problem, and it looks like you've been >> getting help on it. Some if it is a bit sophisticated for someone who >> doesn't understand scoping. Please try to talk to your instructor or a >> TA, they need to understand when you're having problems with your lessons. >> > Thanks for the help. I could swear I tried that first but got error > messages about static and non-static conflict problem. i will be taking > Java in fall quarter. Right now I'm working from "Learn Java in 24 > Hours" I thought up the calculator project myself. Thanks again. There are a few mistakes in your code. You don't need to call 'super()' in the constructor explicitly. That's what happens by default anyway. You called the constructor directly from the 'main()' routine. That means you called it from the primary thread of the program. You don't know this yet, probably, unless you've already studied concurrency in Java a little bit. The problem is that the GUI won't work right if you do that. You have to move GUI actions onto the "Event Dispatch Thread" (EDT), a background thread that the system creates to handle all GUI actions. Also, you start all the action from the constructor. That's bad. As its name implies, a constructor's purpose is to _construct_ an object, not run its logic. Run the logic after construction completes and the instance is no longer in a partially-built state. And make your indentation consistent with the Java coding conventions (available on line). So all together, you'd do something like: public static void main(String[] arguments) { java.awt.EventQueue.invokeAndWait( new Runnable() { @Override public void run() { CalcGUIQ1 calculator = new CalcGUIQ1(); calculator.setVisible(true); } }); }