Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!feeder.erje.net!eu.feeder.erje.net!eternal-september.org!feeder.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Christopher Pisz Newsgroups: comp.lang.java.gui Subject: Basic program flow Date: Tue, 01 Oct 2013 05:08:45 -0500 Organization: A noiseless patient Spider Lines: 96 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Injection-Date: Tue, 1 Oct 2013 10:08:47 +0000 (UTC) Injection-Info: mx05.eternal-september.org; posting-host="4d7f99cc7b9fd97e4c67716bd6e1e29c"; logging-data="5287"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18aE5l69WJusk39kZBKLbuNOvyNbghvusg=" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.28) Gecko/20120306 Thunderbird/3.1.20 Cancel-Lock: sha1:55ka3Mrs9+gwOFGNR0YV9kj5a6o= Xref: csiph.com comp.lang.java.gui:5370 I just started trying to learn java coming from C++. Being a C++ guy, I must understand the details. What is going on, as I debug through the static main method, my window is created and it is displayed, and responds. Yet, the debugger steps out of main...Which I would think exits the program. Indeed I see threads in the debugger that look like it is in some built in method for exiting the program. Did I make a new thread when I created a frame? If so, at what point? Why doesn't the program exit after main is done? What keeps it alive? Remember I am coming from the C Windows API and am used to a windows message pump...i.e. a loop where the program is executing, by dispatching messages. Did I make a basic frame correctly? There seems to be 900 different ways of doing it. I made this, doing my best to follow tutorials on the net: ---------------------------------------------------------------------------- import java.awt.*; import java.awt.event.*; import domain.*; public class Application extends Panel implements WindowListener { /// private static final long serialVersionUID = 5321647437323807661L; /// public static void main(String[] args) { Frame frame = new Frame("Application Frame"); Application application = new Application(); frame.addWindowListener(application); application.initialize(); frame.setSize(300,200); frame.setLocationByPlatform(true); frame.add("Center", application); frame.pack(); frame.setVisible(true); } /// public void initialize() { Card card = new Card(); card.SetName("Shenanigans"); System.out.format("The card name is: %s %n", card.GetName()); System.out.print("Done."); } /// public void windowDeactivated(WindowEvent e) { } /// public void windowDeiconified(WindowEvent e) { } /// public void windowIconified(WindowEvent e) { } /// public void windowOpened(WindowEvent e) { } /// public void windowActivated(WindowEvent e) { } /// public void windowClosed(WindowEvent e) { } /// public void windowClosing(WindowEvent e) { System.exit(0); } }