How to Set Focus on JTextField?

后端 未结 10 1903
感情败类
感情败类 2020-11-30 07:34

I make my game run without mouse so using pointer is not a choice. High Score menu will show when player lose.

this is my code

    highScore=new MyTe         


        
10条回答
  •  时光说笑
    2020-11-30 07:56

    If the page contains multiple item and like to set the tab sequence and focus I will suggest to use FocusTraversalPolicy.

    grabFocus() will not work if you are using FocusTraversalPolicy.

    Sample code

    int focusNumber = 0;
    Component[] focusList;
    focusList = new Component[] { game, move, amount, saveButton,
                printButton, editButton, deleteButton, newButton,
                settingsButton };
    
    frame.setFocusTraversalPolicy(new FocusTraversalPolicy() {
    
            @Override
            public Component getLastComponent(Container aContainer) {
                return focusList[focusList.length - 1];
            }
    
            @Override
            public Component getFirstComponent(Container aContainer) {
                return focusList[0];
            }
    
            @Override
            public Component getDefaultComponent(Container aContainer) {
                return focusList[1];
            }
    
            @Override
            public Component getComponentAfter(Container focusCycleRoot,
                    Component aComponent) {
                focusNumber = (focusNumber + 1) % focusList.length;
                if (focusList[focusNumber].isEnabled() == false) {
                    getComponentAfter(focusCycleRoot, focusList[focusNumber]);
                }
                return focusList[focusNumber];
            }
    
            @Override
            public Component getComponentBefore(Container focusCycleRoot,
                    Component aComponent) {
                focusNumber = (focusList.length + focusNumber - 1)
                        % focusList.length;
                if (focusList[focusNumber].isEnabled() == false) {
                    getComponentBefore(focusCycleRoot, focusList[focusNumber]);
                }
                return focusList[focusNumber];
            }
        });
    

提交回复
热议问题