Skip to Main Content

Java SE (Java Platform, Standard Edition)

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Interested in getting your voice heard by members of the Developer Marketing team at Oracle? Check out this post for AppDev or this post for AI focus group information.

Start/Stop Buttons and infinite loop exit

843805Jul 3 2006 — edited Jul 3 2006
I am trying to make a GUI with a Start/Stop and an Exit button. Initially the button will have the label "Start". When i push it, its label should become "Stop" and an infinite loop function will begin. I want the loop to run until i press the Stop or Exit button.

The problem is that when the loop starts i can't press neither of the buttons. The "Start" button changes its label into "Stop" only if i make the loop finite and it ends.

Here is the source:
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class StartStopButtons extends JFrame{
	
    Component visualComponent = null;
    JPanel panel = null;
    JLabel statusBar = null;
    
	public StartStopButtons() {
		setSize(160, 70);
		getContentPane().setLayout(new BorderLayout());
        panel = new JPanel();
        panel.setLayout(new BorderLayout());
        getContentPane().add(panel, BorderLayout.CENTER);

        final JPanel panel_1 = new JPanel();
        panel.add(panel_1, BorderLayout.CENTER);

        final JButton startButton = new JButton();
        startButton.addActionListener(new ActionListener() {
        	public void actionPerformed(final ActionEvent e) {
                String action = e.getActionCommand();
                if (action.equals("Start")) {
                	System.out.println("Start Loop");
                	startButton.setText("Stop");
                	myLoop ();
                }
                if (action.equals("Stop")) {
                	System.out.println("Stop Loop");
                	System.exit(0);
                }
        	}
        });
        startButton.setText("Start");
        panel_1.add(startButton);

        final JButton exitButton = new JButton();
        exitButton.addActionListener(new ActionListener() {
        	public void actionPerformed(final ActionEvent e) {
                String action = e.getActionCommand();
                if (action.equals("Exit")) {
                    System.exit(0);
                }
        	}
        });
        panel_1.add(exitButton);
        exitButton.setText("Exit");

	}

	public void myLoop() {
		for (int i = 0; ; i++)
			System.out.println(i);
	}
	
	public static void main(String[] args) {
		StartStopButtons ssB = new StartStopButtons();
		ssB.setVisible(true);
	}

}
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jul 31 2006
Added on Jul 3 2006
6 comments
865 views