Q:

How to Increase Timer speed with one button

I have a timer and I'm adding a JButton which increases the speed of the Timer 1x the first time clicked then 4x if the button is clicked again. So far what I have is increasing the Timer 1x then the button switches Icons to the 4x Icon but from there I do not know how to increase the the speed 4x.
@Override
    public void actionPerformed(final ActionEvent theEvent) {
        if (myTimer.isRunning()) { // Make sure timer is running.
            myRace.advance(Utilities.MILLIS_PER_SEC);//Increases timer speed by 1000 milliseconds
            setIcon("./images/ic_four_times.png");//After button is pressed increasing speed change icon to 4x icon
            if(myTimer.isRunning()) { // Attempt to increase speed 4x but logic is flawed
                myRace.advance(Utilities.MILLIS_PER_SEC * 4);
            }
        }
    }

A:

Your post does not have nearly enough information.
What exactly does the myRace.advance() method do? In what way is it related to the Swing Timer (myTimer) being used? 
The Timer speed is related to the delay in milliseconds set upon the Timer. The lower the milliseconds the faster the Timer fires its' related Action Performed event therefore MILLIS_PER_SEC * 4 would in fact slow down the Timer if the myRace.advance() method is indeed changing the Timer's delay rate since this would ultimately supply a Delay setting of 4000 (4 seconds) to the Timer.
By now you may have guessed, to change the myTimer Timer's speed you need to set a new Delay rate (in milliseconds) for that Timer:
myTimer.setDelay(500);

If the Timer's initial delay was set to 1000 milliseconds (1 second or Utilities.MILLIS_PER_SEC) and the Timer is running, when you apply the above new setting to that Timer it will immediately fire its' Action Performed event twice as fast (every half second). If you want the Timer to fire its' Action Performed event 4 times faster than 1 second then your calculation needs to use division (not multiplication) to accomplish it, well...not unless you want to do your multiplication with 0.25 instead of 4 which will provide the same result (1000 / 4 = 1000 * 0.25):
myTimer.setDelay(Utilities.MILLIS_PER_SEC / 4);

This of course would work out to be a setting of 250 milliseconds, which is considerably faster. If there is going to be any game component advancing then it should always advance at the same setting and never change (unless under specific game circumstances), let the firing speed of the Timer's Action Performed event determine the speed of that particular game component. This then goes to say that any game component that requires advancing should perhaps be done through the Timer's Action Performed event. 
If there are other game components that require a different speed rate then each should perhaps have its own Timer. It is also wise to have your Timer(s) in individual Threads or utilize an ExecutorService mechanism. This of course depends upon specific needs for your particular application.
A speed setting of 1x seems more like a default. With that in mind perhaps you example code should be something more like this:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    // Start the Timer if it's not running.
    if (!myTimer.isRunning()) {
        jButton1.setIcon(new javax.swing.ImageIcon("./images/ic_four_times.png"));
        jButton1.setName("4x");
        jButton1.setText("4x Speed");
        speed = 1000;                   // Default (1x)
        myTimer.setDelay(speed);        // Set the Timer delay rate to the default
        myTimer.start();                // Start the Timer!
    }
    // Toggle Timer to 1x speed...
    else if (myTimer.isRunning() && jButton1.getName().equals("1x")) {
        jButton1.setIcon(new javax.swing.ImageIcon("./images/ic_four_times.png"));
        jButton1.setName("4x");
        jButton1.setText("4x Speed");
        speed = 1000;                   // Default (1x)
        myTimer.setDelay(speed);        // Set the Timer delay rate to 1x
    }
    // Toggle Timer to 4x speed...
    else {
        jButton1.setIcon(new javax.swing.ImageIcon("./images/ic_one_times.png"));
        jButton1.setName("1x");
        jButton1.setText("1x Speed");
        speed = 1000 / 4;               // Notice the division
        myTimer.setDelay(speed);        // Set the Timer delay rate to 4x
    }
}

Of course your button object name will be different but I'm sure you get the idea. With this concept when the application first starts the Button would have a caption of Start. To start the ball rolling (so to speak) and fire up the Timer you would click on this start button: 

Once selected and because the Timer is not running the 4x Icon is
applied to the JButton, the JButton's Name property is changed to
4x, the JButton's caption is set to 4x Speed, the class member
variable speed is set to hold a default of 1000 milliseconds (1
second), this speed value is then set as the Timer's delay rate, and
finally the Timer (myTimer) is started.
If the JButton is selected again and the Timer is in fact running
then the JButton's Icon is changed to the 1x icon, the JButton's
Name property is set to 1x, the JButton's caption is changed to 1x Speed, the class member variable speed is set to hold a
value of 1000 / 4 milliseconds (1/4 second), this speed value is then
set as the Timer's delay rate and the Timer changes speed.
If the JButton is selected yet again (for the third time) and the
Timer is in fact running then the JButton's Icon is changed to the
4x icon, the JButton's Name property is set to 4x, the
JButton's caption is changed to 4x Speed, the class member variable
speed is set to hold the default value of 1000 milliseconds (1 second), this speed value is then set as the Timer's delay rate and
the Timer changes speed.
This JButton will now continuously toggle the Timer between 1x and 4x
speeds every time it is selected. Another button or means can be used
to stop the Timer (myTimer.stop();) when or if required.

You may or my not like this concept but I think you may be able to get something from it.
On another note, look at your example code. Can you see how you have nested your IF statements? Because the Timer is running both calls from each IF blocks to the myRace.advance() method will be carried out upon each hit of the JButton. That means that the myRace.advance() is called twice with each selection and of course the last one called is the myRace.advance(Utilities.MILLIS_PER_SEC * 4);. Would be interesting to know exactly what this method does ;) but I'm sure it's provinding some unexpected results.
And finally...Perhaps my Java8+ is already too old but I'm not aware that you can set a JButton's icon using the setIcon() method by supplying it with a string path:
setIcon("./images/ic_four_times.png");

This shouldn't compile! The setIcon() method requires a Icon or a ImageIcon type object.

