设置键盘焦点

时间:2015-12-06 01:31:25

标签: java swing user-interface methods focus

我目前正在关注如何创建猜谜游戏GUI App的java教程。然而,在说明书的某一点上,它表示将键盘焦点设置为字段;我不知道这意味着什么或怎么做。任何澄清将不胜感激。

这里是确切的说明:将用户的注意力集中在thePlayer字段上: 将键盘焦点设置为字段。

到目前为止,这是我的代码:

public class GOM extends JFrame implements ActionListener, KeyListener
{
    Container content = this.getContentPane();
    //top
JTextField theGuess = new JTextField(10);
JLabel bankroll = new JLabel("");

//bottom
JButton newplayer = new JButton("New Player"); 
JButton newnumber = new JButton("New Number"); 
JTextField thePlayer = new JTextField(20);

//center
JTextArea theoutput = new JTextArea("");

//invisible
String playerName;
int theNumber;
int numTries;
int numGames;
double amtRemaining;

 Random randomizer()
{
  Random rnd = new Random();
  return rnd;
}
   JScrollPane scrollArea = new JScrollPane(theoutput); 



public GOM()
{
    this.setVisible(true);
       this.setSize(500,400);
       this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setTitle("Guess O'Matic");

        //top panel

        JPanel p1 = new JPanel();
        p1.add(theGuess);
        p1.add(bankroll);
        p1.add(new JLabel("Make Your Guess"));
        content.add(p1, BorderLayout.NORTH);

        //bottom panel
        JPanel p2 = new JPanel();
         p2.add(newplayer);
         p2.add(newnumber);
         p2.add(thePlayer);
         content.add(p2, BorderLayout.SOUTH);

         // finishing touches
         content.add(new JLabel("  "), BorderLayout.WEST);
         content.add(new JLabel("  "), BorderLayout.EAST);  
         content.add(scrollArea, BorderLayout.CENTER);
         newplayer.addActionListener(this);
         newnumber.addActionListener(this);
         thePlayer.addKeyListener(this);
         theGuess.addKeyListener(this);

         newPlayer();
}
public void newPlayer()
{
    theoutput.setText(playerName);
    theoutput.setEnabled(false);
    theGuess.setEnabled(false);
    newnumber.setEnabled(false);
    newplayer.setEnabled(false);
    theGuess.setBackground(Color.WHITE);
    thePlayer.setEnabled(true);
    thePlayer.setText(playerName);
    thePlayer.setBackground(Color.YELLOW);
}
    @Override
    public void actionPerformed(ActionEvent e) 
    {

    }

    @Override
    public void keyTyped(KeyEvent e) 
    {

    }

    @Override
    public void keyPressed(KeyEvent e) 
    {

    }

    @Override
    public void keyReleased(KeyEvent e) 
    {

    }

}

1 个答案:

答案 0 :(得分:2)

如果您的GUI具有多个JTextField以及可能的其他文本组件,则键盘焦点一次只能位于其中一个字段上。换句话说,如果键入,只有一个字段可以显示插入符,然后通常会显示键入的文本。当显示Swing GUI时,GUI必须决定哪个文本组件应该具有焦点,并且它使用其焦点遍历策略来决定这一点。默认策略通常会将焦点放在创建的第一个文本字段中。 可以通过调用要保留焦点的文本组件上的requestFocusInWindow()来更改此内容。