Following my previous post here , I wrote a listener :
@Override
public void keyTyped(KeyEvent keyEvent) 
{
    PolygonFiller polyFiller = new PolygonFiller();
    char key = keyEvent.getKeyChar();
    final boolean runForever = true;
    switch(key)
    {
        /**
         *  Fill the polygons 
         */
        case FILL_POLYGON:      
        {
            if (greenLightForFilling == true)
            {
                while (runForever)
                {
                    fillPolygon(polyFiller);
                    KeyListener listener = new KeyListener()
                    {
                        public void keyPressed(KeyEvent keyEvent) 
                        {
                            char keyOther = keyEvent.getKeyChar();
                            if (keyOther == 'F' || keyOther == 'f')
                                // can't use break;
                                runForever = false;
                        }
                        @Override
                        public void keyReleased(KeyEvent arg0) {}
                        @Override
                        public void keyTyped(KeyEvent arg0) {}
                    };
                }
            }
            break;
        }  // end FILL_POLYGON
        case FILL_POLYGON_LOWERCASE:
        {
            if (greenLightForFilling == true)
            {
                fillPolygon(polyFiller);
            }
            break;              
        }
        /**
         *  save all polygons in a .scn file
         */
        case SAVE_POLYGONS :         
        {
            if (greenLightForFilling == true)
            {
                saveWorkspace();
            } 
            break;  
        }   // end SAVE_POLYGONS
        case SAVE_POLYGONS_LOWERCASE:
        {
            if (greenLightForFilling == true)
            {
                saveWorkspace();
            } 
            break;  
        }
        /**
         *  Delete everything & load all polygons from .scn file
         */
        case LOAD_POLYGONS:      
        {
            loadWorkspace();
            break;
        }   
        case LOAD_POLYGONS_LOWERCASE:
        {
            loadWorkspace();
            break;
        }
        default: break;  
    } // end switch
} 
The goal :
break from the loop , when I get a second
forF(I already got onef/Fwhen I entered to loop) .Do I need to attach the second listener to something ?
But I can't change the runForever to false , since it's written outside . 
Even if I change it to final , I can't change its value to false either . 
Any way around this ?
Note : I already have a key-listener for entering the switch-case!!
EDIT:
// Hot-keys hit by the user - used for keyboard listening
private static final char FILL_POLYGON = 'F';
private static final char SAVE_POLYGONS = 'S';
private static final char LOAD_POLYGONS = 'L';
private static final char FILL_POLYGON_LOWERCASE = 'f';
private static final char SAVE_POLYGONS_LOWERCASE = 's';
private static final char LOAD_POLYGONS_LOWERCASE = 'l';
    @Override
    public void keyTyped(KeyEvent keyEvent) 
    {
        PolygonFiller polyFiller = new PolygonFiller();
        char key = keyEvent.getKeyChar();
        final Settable runForever = new Settable();
        switch(key)
        {
            /**
             *  Fill the polygons 
             */
            case FILL_POLYGON:      
            {
                if (greenLightForFilling == true)
                {
                        KeyListener listener = new KeyListener()
                        {
                            public void keyPressed(KeyEvent keyEvent) 
                            {
                                char keyOther = keyEvent.getKeyChar();
                                if (keyOther == 'F' || keyOther == 'f')
                                    runForever.set(false);
                            }
                            @Override
                            public void keyReleased(KeyEvent arg0) {}
                            @Override
                            public void keyTyped(KeyEvent arg0) {}
                        };
                        this.addKeyListener(listener);
                        while (runForever.get())
                        {
                            fillPolygon(polyFiller);
                        }
                }
                break;
            }  // end FILL_POLYGON
...
}