Welcome to the Java Programming Forums

The professional, friendly Java community. 21,500 members and growing!

The Java Programming Forums are a community of Java programmers from all around the World. Our members have a wide range of skills and they all have one thing in common: A passion to learn and code Java. We invite beginner Java programmers right through to Java professionals to post here and share your knowledge. Become a part of the community, help others, expand your knowledge of Java and enjoy talking with like minded people. Registration is quick and best of all free. We look forward to meeting you.


Members have full access to the forums. Advertisements are removed for registered users.

Results 1 to 4 of 4

Thread: How to allow my program to keep runningwithout closing it?

  1. #1
    Junior Member
    Join Date
    May 2011
    My Mood
    Thanked 0 Times in 0 Posts

    Default How to allow my program to keep runningwithout closing it?

    As mentioned in the title, How do I go about allowing my program to run as many times without having to close the program?

    Now, I am able to run my program but problem is whenever I click the "Start" button, it will not work because it does not clear the previous inputs.


    When I start the program for the 1st time,
    col is B row is 145
    col is B row is 161

    if I run my program (w/o closing it) again,
    col is BB row is 145145 <-
    col is BB row is 161161 <-

    How do I allow the program to run multiple times without having to close it?

    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    import java.io.IOException;
    import jxl.Cell;
    import jxl.Sheet;
    import jxl.Workbook;
    import jxl.read.biff.BiffException;
    import javax.swing.JFileChooser;
    import java.io.File;
    public class CustomiseKeystroke {
      		static String key;
    		static String fullFileName;
    		static JTextField jtfFile, jtfCell;
    	    private Robot robot;
    	    static char colNumber;
    		static String columnBegin="";
    		static String rowBegin="";
    		static String columnEnd="";
    		static String rowEnd ="";
    		static	int columnNo;
    		static int rowNo = 0;
        public static void main(String... args) throws Exception {
    JFrame f = new JFrame();
        	f.setLayout(new BorderLayout());
        	f.setTitle("Marks Entering Keystroke");
        	JPanel titlePanel = new JPanel();
        	JLabel title = new JLabel("Marks Entering Keystroke");
        	JPanel contentPanel = new JPanel();
    	    		//content pane
    	    		JPanel contentPanel1 = new JPanel();
    	    		contentPanel1.setLayout(new BorderLayout());
    	    			//sub content pane 1 for conents.
    	    			JPanel cp1 = new JPanel();
    	    			cp1.setLayout(new BorderLayout());
    	    			JLabel lblFile = new JLabel("File: ");
    	    			final JTextField tfPath = new JTextField(20);
    	    			JButton btnBrowse = new JButton("Browse");
    	    			btnBrowse.addActionListener(new ActionListener() {
    					        public void actionPerformed(ActionEvent e)   {
    				      		 JFileChooser chooser = new JFileChooser();
    					            File file = chooser.getSelectedFile();
    					            String fileName = file.getName();
    					            String strDirectory = file.getParent();
    					            String con = "\\";
    					            fullFileName = strDirectory + con + fileName;
    	    			cp1.add(lblFile, BorderLayout.WEST);
    	    			cp1.add(tfPath, BorderLayout.CENTER);
    	    			cp1.add(btnBrowse, BorderLayout.EAST);
    	    			JPanel cp2 = new JPanel();
    	    			cp2.setLayout(new FlowLayout());
    	    			JLabel lblType = new JLabel("Move between Cells: ");
    	    			CheckboxGroup radio = new CheckboxGroup();
    					final Checkbox	enterButton = new Checkbox("Enter", radio, true);
    					final Checkbox	tabButton = new Checkbox("Tab", radio, false);
    	    		JPanel contentPanel2 = new JPanel();
    	    		contentPanel2.setLayout(new BorderLayout());
    	    			JPanel cp3 = new JPanel();
    	    			JLabel lblCell = new JLabel("Cell Range: ");
    	    			final	JTextField tfCell = new JTextField(5);
    	    			JLabel lblDelay = new JLabel("Delay: ");
    	    			JTextField tfDelay = new JTextField(5);
    	    	JPanel btnPanel = new JPanel();
    	    	JButton btnStart = new JButton("Start");
    	    	  btnStart.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e)   {
        	  		String path = tfPath.getText();
        	  		String cell = tfCell.getText();
    		       int posColon= cell.indexOf(":");
             String begin = cell.substring(0, posColon);
       		String end = cell.substring(posColon+1, cell.length() ) ;
        //    System.out.println(begin+"   "+end);
     		 for (int i=0; i<begin.length(); i++)
     		  isNumber(""+begin.substring(i,i+1) )  ;
             System.out.println("col is "+columnBegin + "\t row is " + rowBegin );
             for (int i=0; i<end.length(); i++)
     		 isNumber1(""+end.substring(i,i+1) ) ;
    		 int rowNo1 = Integer.parseInt(rowBegin) - 1;
     		 int rowNo = Integer.parseInt(rowEnd) ;
             System.out.println("col is "+columnEnd + "\t row is " + rowNo );
    		Character c = new Character(columnBegin.charAt(0));
    		Character c1 = new Character(columnEnd.charAt(0));
        	CustomiseKeystroke keyboard = new CustomiseKeystroke();
            Workbook workbook = Workbook.getWorkbook(new File(path));
            Sheet sheet = workbook.getSheet(0);
      		 for (int x=rowNo1; x<rowNo; x++) {
      		    Cell excel1 = sheet.getCell(columnNo, x);
      		     String data1 = excel1.getContents();
     					if (tabButton.getState() == true) {
    			        } else{
      		  catch (Exception ex) {}
    	    		contentPanel1.add(cp1, BorderLayout.NORTH);
    	    		contentPanel1.add(cp2, BorderLayout.CENTER);
    	    		contentPanel2.add(cp3, BorderLayout.NORTH);
    	    	//	contentPanel2.add(cp4, BorderLayout.CENTER);
        	f.add(titlePanel, BorderLayout.NORTH);
        	f.add(contentPanel, BorderLayout.CENTER);
        	f.add(btnPanel, BorderLayout.SOUTH);
    			static boolean isNumber(String c)
    	    	  	 rowBegin +=c;
    	    		return true;
    	    	catch (Exception e)
    			   columnBegin +=c;
    		  		return false;
    		static boolean isNumber1(String c1)
    	    	  	 rowEnd +=c1;
    	    		return true;
    	    	catch (Exception e)
    	    			   columnEnd +=c1;
    	    		  		return false;
    	static void colNumber (char character)
    	//	int columnNo = 0;
    	switch (character)
    			case 'A': columnNo =0; break;
    			case 'B': columnNo = 1; break;
    			case 'C': columnNo = 2; break;
    			case 'D': columnNo = 3; break;
    			case 'E': columnNo = 4; break;
    			case 'F': columnNo = 5; break;
    			case 'G': columnNo = 6; break;
    			case 'H': columnNo = 7; break;
    			case 'I': columnNo = 8; break;
    			case 'J': columnNo = 9; break;
    			case 'K': columnNo = 10; break;
    			case 'L': columnNo = 11; break;
    			case 'M': columnNo = 12; break;
    			case 'N': columnNo = 13; break;
    			case 'O': columnNo = 14; break;
    			case 'P': columnNo = 15; break;
    			case 'Q': columnNo = 16; break;
    			case 'R': columnNo = 17; break;
    			case 'S': columnNo = 18; break;
    			case 'T': columnNo = 19; break;
    			case 'U': columnNo = 20; break;
    			case 'V': columnNo = 21; break;
    			case 'W': columnNo = 22; break;
    			case 'X': columnNo = 23; break;
    			case 'Y': columnNo = 24; break;
    			case 'Z': columnNo = 25; break;
       public CustomiseKeystroke() throws AWTException {
            this.robot = new Robot();
        public CustomiseKeystroke(Robot robot) {
            this.robot = robot;
        public void type(CharSequence characters) {
            int length = characters.length();
            for (int i = 0; i < length; i++) {
                    char character = characters.charAt(i);
       public void type(char character) {
            switch (character) {
            case 'a': doType(KeyEvent.VK_A); break;
            case 'b': doType(KeyEvent.VK_B); break;
            case 'c': doType(KeyEvent.VK_C); break;
            case 'd': doType(KeyEvent.VK_D); break;
            case 'e': doType(KeyEvent.VK_E); break;
            case 'f': doType(KeyEvent.VK_F); break;
            case 'g': doType(KeyEvent.VK_G); break;
            case 'h': doType(KeyEvent.VK_H); break;
            case 'i': doType(KeyEvent.VK_I); break;
            case 'j': doType(KeyEvent.VK_J); break;
            case 'k': doType(KeyEvent.VK_K); break;
            case 'l': doType(KeyEvent.VK_L); break;
            case 'm': doType(KeyEvent.VK_M); break;
            case 'n': doType(KeyEvent.VK_N); break;
            case 'o': doType(KeyEvent.VK_O); break;
            case 'p': doType(KeyEvent.VK_P); break;
            case 'q': doType(KeyEvent.VK_Q); break;
            case 'r': doType(KeyEvent.VK_R); break;
            case 's': doType(KeyEvent.VK_S); break;
            case 't': doType(KeyEvent.VK_T); break;
            case 'u': doType(KeyEvent.VK_U); break;
            case 'v': doType(KeyEvent.VK_V); break;
            case 'w': doType(KeyEvent.VK_W); break;
            case 'x': doType(KeyEvent.VK_X); break;
            case 'y': doType(KeyEvent.VK_Y); break;
            case 'z': doType(KeyEvent.VK_Z); break;
            case 'A': doType(KeyEvent.VK_SHIFT, KeyEvent.VK_A); break;
            case 'B': doType(KeyEvent.VK_SHIFT, KeyEvent.VK_B); break;
            case 'C': doType(KeyEvent.VK_SHIFT, KeyEvent.VK_C); break;
            case 'D': doType(KeyEvent.VK_SHIFT, KeyEvent.VK_D); break;
            case 'E': doType(KeyEvent.VK_SHIFT, KeyEvent.VK_E); break;
            case 'F': doType(KeyEvent.VK_SHIFT, KeyEvent.VK_F); break;
            case 'G': doType(KeyEvent.VK_SHIFT, KeyEvent.VK_G); break;
            case 'H': doType(KeyEvent.VK_SHIFT, KeyEvent.VK_H); break;
            case 'I': doType(KeyEvent.VK_SHIFT, KeyEvent.VK_I); break;
            case 'J': doType(KeyEvent.VK_SHIFT, KeyEvent.VK_J); break;
            case 'K': doType(KeyEvent.VK_SHIFT, KeyEvent.VK_K); break;
            case 'L': doType(KeyEvent.VK_SHIFT, KeyEvent.VK_L); break;
            case 'M': doType(KeyEvent.VK_SHIFT, KeyEvent.VK_M); break;
            case 'N': doType(KeyEvent.VK_SHIFT, KeyEvent.VK_N); break;
            case 'O': doType(KeyEvent.VK_SHIFT, KeyEvent.VK_O); break;
            case 'P': doType(KeyEvent.VK_SHIFT, KeyEvent.VK_P); break;
            case 'Q': doType(KeyEvent.VK_SHIFT, KeyEvent.VK_Q); break;
            case 'R': doType(KeyEvent.VK_SHIFT, KeyEvent.VK_R); break;
            case 'S': doType(KeyEvent.VK_SHIFT, KeyEvent.VK_S); break;
            case 'T': doType(KeyEvent.VK_SHIFT, KeyEvent.VK_T); break;
            case 'U': doType(KeyEvent.VK_SHIFT, KeyEvent.VK_U); break;
            case 'V': doType(KeyEvent.VK_SHIFT, KeyEvent.VK_V); break;
            case 'W': doType(KeyEvent.VK_SHIFT, KeyEvent.VK_W); break;
            case 'X': doType(KeyEvent.VK_SHIFT, KeyEvent.VK_X); break;
            case 'Y': doType(KeyEvent.VK_SHIFT, KeyEvent.VK_Y); break;
            case 'Z': doType(KeyEvent.VK_SHIFT, KeyEvent.VK_Z); break;
            case '`': doType(KeyEvent.VK_BACK_QUOTE); break;
            case '0': doType(KeyEvent.VK_0); break;
            case '1': doType(KeyEvent.VK_1); break;
            case '2': doType(KeyEvent.VK_2); break;
            case '3': doType(KeyEvent.VK_3); break;
            case '4': doType(KeyEvent.VK_4); break;
            case '5': doType(KeyEvent.VK_5); break;
            case '6': doType(KeyEvent.VK_6); break;
            case '7': doType(KeyEvent.VK_7); break;
            case '8': doType(KeyEvent.VK_8); break;
            case '9': doType(KeyEvent.VK_9); break;
            case '-': doType(KeyEvent.VK_MINUS); break;
            case '=': doType(KeyEvent.VK_EQUALS); break;
            case '~': doType(KeyEvent.VK_SHIFT, KeyEvent.VK_BACK_QUOTE); break;
            case '!': doType(KeyEvent.VK_EXCLAMATION_MARK); break;
            case '@': doType(KeyEvent.VK_SHIFT, KeyEvent.VK_2); break;
            //case '@': doType(KeyEvent.VK_AT); break;
            case '#': doType(KeyEvent.VK_NUMBER_SIGN); break;
            case '$': doType(KeyEvent.VK_DOLLAR); break;
            case '%': doType(KeyEvent.VK_SHIFT, KeyEvent.VK_5); break;
            case '^': doType(KeyEvent.VK_CIRCUMFLEX); break;
            case '&': doType(KeyEvent.VK_AMPERSAND); break;
            case '*': doType(KeyEvent.VK_ASTERISK); break;
            case '(': doType(KeyEvent.VK_LEFT_PARENTHESIS); break;
            case ')': doType(KeyEvent.VK_RIGHT_PARENTHESIS); break;
            case '_': doType(KeyEvent.VK_UNDERSCORE); break;
            case '+': doType(KeyEvent.VK_PLUS); break;
            case '\t': doType(KeyEvent.VK_TAB); break;
            case '\n': doType(KeyEvent.VK_ENTER); break;
            case '[': doType(KeyEvent.VK_OPEN_BRACKET); break;
            case ']': doType(KeyEvent.VK_CLOSE_BRACKET); break;
            case '\\': doType(KeyEvent.VK_BACK_SLASH); break;
            case '{': doType(KeyEvent.VK_SHIFT, KeyEvent.VK_OPEN_BRACKET); break;
            case '}': doType(KeyEvent.VK_SHIFT, KeyEvent.VK_CLOSE_BRACKET); break;
            case '|': doType(KeyEvent.VK_SHIFT, KeyEvent.VK_BACK_SLASH); break;
            case ';': doType(KeyEvent.VK_SEMICOLON); break;
            case ':': doType(KeyEvent.VK_COLON); break;
            case '\'': doType(KeyEvent.VK_QUOTE); break;
            case '"': doType(KeyEvent.VK_QUOTEDBL); break;
            case ',': doType(KeyEvent.VK_COMMA); break;
            case '<': doType(KeyEvent.VK_LESS); break;
            case '.': doType(KeyEvent.VK_PERIOD); break;
            case '>': doType(KeyEvent.VK_GREATER); break;
            case '/': doType(KeyEvent.VK_SLASH); break;
            case '?': doType(KeyEvent.VK_SHIFT, KeyEvent.VK_SLASH); break;
            case ' ': doType(KeyEvent.VK_SPACE); break;
            //Arrow Key
                    throw new IllegalArgumentException("Cannot type character " + character);
         public void typeArrow(String d) {
         	if (d.equals("Up")) doType(KeyEvent.VK_UP); else
         	if (d.equals("Down")) doType(KeyEvent.VK_DOWN); else
         	if (d.equals("Left")) doType(KeyEvent.VK_LEFT); else
         	if (d.equals("Right")) doType(KeyEvent.VK_RIGHT);
        private void doType(int... keyCodes) {
            doType(keyCodes, 0, keyCodes.length);
        private void doType(int[] keyCodes, int offset, int length) {
            if (length == 0) {
            doType(keyCodes, offset + 1, length - 1);

  2. #2
    Super Moderator Norm's Avatar
    Join Date
    May 2010
    SW Missouri
    Thanked 2,153 Times in 2,126 Posts

    Default Re: How to allow my program to keep runningwithout closing it?

    How do I go about allowing my program to run as many times without having to close the program
    Are you talking about using a loop? That is the normal way to do the same thing over and over as many times as you want.

    whenever I click the "Start" button, it will not work because it does not clear the previous inputs.
    Why don't you clear the previous inputs?
    What statements do you use to put the values in the display area?
    Last edited by Norm; July 17th, 2011 at 09:20 PM.

  3. #3
    Junior Member
    Join Date
    May 2011
    My Mood
    Thanked 0 Times in 0 Posts

    Default Re: How to allow my program to keep runningwithout closing it?

    Are you talking about using a loop? That is the normal way to do the same thing over and over as many times as you want.
    Yeap. I guess it's loop I'm talking about. But how do I go about doing it?

    Why don't you clear the previous inputs?
    What statements do you use to put the values in the display area?
    How do I go about doing the clearing of previous inputs?
    I tried to use setText(" "); but it doesn't work. The problem is still there.

    Which display area you meant?

  4. #4
    mmm.. coffee JavaPF's Avatar
    Join Date
    May 2008
    United Kingdom
    My Mood
    Thanked 287 Times in 225 Posts
    Blog Entries

    Default Re: How to allow my program to keep runningwithout closing it?

    Where did you put the .setText(); ?


    JLabel lblCell = new JLabel("Cell Range: ");
    final	JTextField tfCell = new JTextField(5);
    JLabel lblDelay = new JLabel("Delay: ");
    JTextField tfDelay = new JTextField(5);

    Do these values load blank each time now?
    Please use [highlight=Java] code [/highlight] tags when posting your code.
    Forum Tip: Add to peoples reputation by clicking the button on their useful posts.

    Looking for a Java job? Visit - Java Programming Careers

Similar Threads

  1. Replies: 0
    Last Post: May 10th, 2011, 07:02 AM
  2. Help with class program!!! STUCK! Program not doing what I Want!!!
    By sketch_flygirl in forum What's Wrong With My Code?
    Replies: 7
    Last Post: April 4th, 2011, 07:29 AM
  3. problem with closing connection to client socket
    By sunitha in forum Java Networking
    Replies: 1
    Last Post: December 11th, 2010, 03:28 AM
  4. [SOLVED] frame closing programmatically
    By nasi in forum AWT / Java Swing
    Replies: 9
    Last Post: May 10th, 2010, 03:43 AM